【问题标题】:Where does information in BackBone go?BackBone 中的信息在哪里?
【发布时间】:2012-07-19 05:51:18
【问题描述】:

savecreate 被扔向服务器时,服务器会响应一个新的随机创建的对象。该对象可以是许多不同的类之一,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})    

【问题讨论】:

  • 您不应该绑定到模型的sync 事件,而不是change 事件吗?

标签: backbone.js coffeescript underscore.js


【解决方案1】:

更改事件只会为您提供更改的模型和值...

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

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

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

您还可以按照 cmets 中的说明绑定到模型的同步事件:

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

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

不太清楚为什么您希望从保存中获取数据,但这会改变您的页面。好像有点奇怪。

您希望在保存后收到哪些类型的数据,而您的模型中没有这些数据?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-13
    • 2013-10-04
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多