2012-07-18 32 views
0

savecreate被拋向服務器時,服務器會響應一個新的隨機創建的對象。該對象可以是許多不同類中的一個,Backbone響應這些區分對象並加載相對視圖。BackBone中的信息在哪裏去?

我似乎只能在bootstrap上找出這個邏輯,因爲沒有視圖已經加載,所以我可以基於從服務器隨機接收的什麼信息,引導並導航到​​特定的路由。

但是,我試圖弄清楚如何在保存對象時接收我的返回數據。

這是我的代碼細分。

信息被保存。

@model.save(@model.toJSON(), 

我有一個listenener等待這節省:

constructor: (options) -> 
    super(options) 
    @model.bind 'change:verb', _.chooser, options 

_.maestra_chooser是一個混合我有一個公共傳送帶:

_.mixin 
    _chooser : (item) => 
    console.log item 

某事注意這裏。不幸的是,變量item與剛剛保存的@model相同。那裏沒有新的數據。

我希望什麼item是從服務器的新變量數據,這樣我可以把這些數據,看看它是什麼樣的數據,然後路線相關的視圖。

這是我相信我也在製造一個架構不健全的想法。但是由於我不明白的解釋的理由。

有誰知道其中我可以從服務器訪問返回數據,並適當地將我的應用程序導航到相應的路線?

其他信息

這是我如何恰當地引導它:

window.router = new Project.Routers.QuestionsRouter(
{ 
    words: #{ @words.to_json.html_safe } 
}); 

Backbone.history.start(); 

router.navigate("#{@words.kind_of?(Array) ? "bar" : "foo"}", {trigger: true, replace: true})  
+1

你不應該綁定到模型的'sync'事件,而不是'change'事件嗎? – stusmith 2012-07-18 09:50:07

回答

1

改變事件永遠只能去給你的模型,並改變了價值...

您可以通過成功回調保存:

@model.save(@model.toJSON(), success: (model, resp) -> 
    # do whatever with resp 
) 

其中resp將包含來自服務器的原始響應,並且model將包含模型的服務器端狀態。

您也可以綁定到模型中的同步事件作爲在評論中提到:

@model.bind 'sync', _.masetra_chooser, options 

sync回調調用參數:型號,RESP和選項,其中選項是一組傳遞給save選項。 https://github.com/documentcloud/backbone/blob/9a12b7640f07839134e979b66df658b70e6e4fe9/backbone.js#L383

不知道爲什麼你期望從保存中獲取數據,這將改變你的頁面。似乎有點奇怪。

保存後您希望接收的數據類型不在您的模型中?