0

当一个save, 或create被扔向服务器时,服务器会响应一个新的随机创建的对象。该对象可以是许多不同的类之一,Backbone 响应这些不同的对象并加载一个相对视图。

我似乎只能在引导程序上弄清楚这个逻辑,因为还没有加载任何视图,所以我可以根据我从服务器随机接收到的信息,引导并导航到​​那个特定的路线。

但是,当我保存一个对象并接收我的返回数据时,我一直试图弄清楚如何做到这一点。

这是我的代码分解。

信息已保存。

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

我有一个听众在等待这个保存:

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

_.maestra_chooser 是我在实用工具带中的一个 mixin:

_.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})    
4

1 回答 1

1

改变事件只会给你模型和改变的价值......

您可以将成功回调传递给您的保存:

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

whereresp将包含来自服务器的原始响应,model并将包含模型的服务器端状态。

如评论中所述,您还可以绑定到模型的同步事件:

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

回调使用sync参数调用:模型、resp 和选项,其中选项是传递给的选项集savehttps://github.com/documentcloud/backbone/blob/9a12b7640f07839134e979b66df658b70e6e4fe9/backbone.js#L383

不太确定为什么您希望从会更改您页面的保存中获取数据。似乎有点奇怪。

在您的模型中不存在的保存后,您希望收到什么类型的数据?

于 2012-07-18T13:05:18.683 回答