0
我在玩Rails應用程序,該應用程序使用Backbone處理不同頁面上的一些數據,我在獲取集合和創建新模型方面沒有任何問題,但我無法從一個模型中獲取單個模型服務器爲了執行,比如顯示或編輯。我想聲明urlRoot
按照其他類似的問題在這裏找到在SO答案:獲取單個骨幹模型
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
據我瞭解,我可以從路由本身"products/:id"
傳遞一個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都很新,所以在我看邏輯的時候可能會有一個關鍵的缺陷。任何指導將非常感激,我一直堅持這個很簡單的問題已經有幾天了。
感謝您的回覆!但除此之外,Backbone假定我試圖獲取'isNew'的模型是真實的,儘管我傳遞了一個id屬性 - 'id:id'。 Backbone調試器顯示存在一個URL爲「/ products /」的模型,該模型在其屬性中包含整個現有模型堆棧。我提取模型的方式有什麼錯誤嗎? –
我也根據你的觀察更新了這個問題。 –