获取单个主干模型

时间:2015-09-17 23:42:55

标签: backbone.js fetch

我正在使用Rails应用程序,该应用程序使用Backbone处理不同页面上的一些数据,我在获取集合和创建新模型时没有任何问题,但我无法从服务器获取单个模型以便执行,说,显示或编辑。我试图按照SO上的其他类似问题的答案声明urlRoot

class Entities.Product extends Backbone.Model
  urlRoot: -> 
    if @isNew
      '/products/'
    else
      '/products/' + @id

我正在使用以下路线开始演出:

class ProductsUnit.Router extends Marionette.AppRouter
  appRoutes:
    "products/:id" : "showProduct"

API =
  showProduct: (id) ->
    ProductsUnit.Show.Object.showProduct()

稍后在代码中我请求产品的单个实体:

Show.Object =
    showProduct: (id) ->
        product = App.request "product:entity"

请求由以下处理程序处理:

App.reqres.setHandler "product:entity", ->
    API.getSingleProduct id

它会触发一个产品:

getSingleProduct: (id) ->
  product = new Entities.Product
    id: id
  product.fetch()
  product

据我了解,我可以将id从路径本身"products/:id"传递到最终会获取模型的函数链,urlRoot将为/products/+ @id其中this将表示最初从路线中获取的ID。但似乎情况并非如此,因为成功isNew返回true,即使我正在尝试传递ID以使其false

getSingleProduct: (id) ->
  product = new Entities.Product
    id: id
  product.fetch success: ->
    console.log product.isNew()
    return
  product

我对Backbone和Javascript都相当新,所以也许我看到逻辑的一个关键缺陷。任何指导都会非常感激,我已经坚持了几天这个非常简单的问题。

1 个答案:

答案 0 :(得分:0)

我认为你已经交换了你的urlRoot逻辑:当模型isNew还没有id时。

所以它应该是:

  urlRoot: -> 
    if @isNew
      '/products/'
    else
      '/products/' + @id