2012-07-18 64 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

不知道为什么你期望从保存中获取数据,这将改变你的页面。似乎有点奇怪。

保存后您希望接收的数据类型不在您的模型中?