当向服务器抛出save
或create
时,服务器会使用新的随机创建的对象进行响应。该对象可以是许多不同类中的一个,Backbone响应这些区分对象并加载相对视图。
我似乎只能在引导程序上计算出这个逻辑,因为还没有加载视图,所以我可以根据我从服务器随机接收的信息,引导程序并导航到该特定路径。
但是,当我保存一个对象并收到我的返回数据时,我一直想弄清楚如何做到这一点。
这是我的代码细分。
信息已保存。
@model.save(@model.toJSON(),
我有一个听众等待这次保存:
constructor: (options) ->
super(options)
@model.bind 'change:verb', _.chooser, options
_。maestra_chooser是我在实用带中的混合物:
_.mixin
_chooser : (item) =>
console.log item
这里要注意的事情。遗憾的是,变量item
与刚保存的@model
相同。那里没有新数据。
我希望item
是来自服务器的新变量数据,以便我可以获取该数据,查看它是什么类型的数据,然后路由到相关视图。 / p>
我相信这也是我在构建一个不合理的想法的地方。但由于我理解不足以解释的原因。
有没有人知道 where 我可以从服务器访问返回数据并适当地将我的应用程序导航到相应的路径?
其他信息
这是我适当地引导它的方式:
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})
答案 0 :(得分:1)
更改事件只会为您提供模型和更改的值...
您可以将成功回调传递给您的保存:
@model.save(@model.toJSON(), success: (model, resp) ->
# do whatever with resp
)
其中resp
将包含来自服务器的原始响应,model
将包含模型的服务器端状态。
您还可以按照评论中提到的那样绑定到模型的同步事件:
@model.bind 'sync', _.masetra_chooser, options
使用参数调用sync
回调:model,resp和options其中options是传递给save
的选项集。
https://github.com/documentcloud/backbone/blob/9a12b7640f07839134e979b66df658b70e6e4fe9/backbone.js#L383
不确定为什么您希望从保存更改页面的数据中获取数据。似乎有点奇怪。
在您的模型中没有保存后,您希望接收哪种类型的数据?