嵌套模型中的更改(销毁)不会触发刷新视图

时间:2012-01-04 07:03:41

标签: backbone.js coffeescript

我有一个带有嵌套模型的backbone.js应用程序(每个都有邮件的Think Mailbox)

我使用了另一个堆栈溢出问题的建议,我在其中设置了一个" parent"在每个Messages集合对象上,以便我可以导航回那些父对象。

添加子对象时,我可以使用该策略重置父对象上的属性以使父视图刷新 - 这是我想要的,因为它显示了其子对象的聚合计数。喜欢这个coffeescript:

@collection.create(@model.toJSON(),
  success: (message) =>
    @model = message
    @collection.parent.set({"message_count": @collection.length})
    window.location.hash = ""
  error: (message, jqXHR) =>
    @model.set({errors: $.parseJSON(jqXHR.responseText)})
)

但是,当删除子对象时,我尝试以相同的方式在父对象上设置相同的属性,只有数据模型更改不会在父视图中触发更新。我无法弄清楚原因!我可以查看调试器并在父级上看到我的属性已正确更新,但父视图未刷新。

这是我尝试的一种方式:

destroy: () ->
  collection = @model.collection
  parent = @model.collection.parent
  @model.destroy()
  this.remove()
  collection.remove(@model)
  parent.set({"message_count": collection.length})
  return false

设置父对象的值,但视图不会刷新。

我也可以这样试试 - 我试图等待成功从服务器回来让我知道我可以更新我的观点:

destroy: () ->
  collection = @model.collection
  @model.destroy( 
    success:(resp) ->
      alert ("in success")
      collection.remove(@model)
      collection.parent.set({"message_count": collection.length})
    error:(resp) ->
      alert ("in error" + resp) 
  )
  this.remove()
  return false

我在这里看到的问题是,即使服务器正在删除子对象并将200响应发送回客户端,也只会运行错误代码!无论我在这里做什么,我都在同一条船上 - 父母的观点不会刷新。

任何人都可以解释原因吗?

提前致谢...

0 个答案:

没有答案