我有一个带有嵌套模型的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响应发送回客户端,也只会运行错误代码!无论我在这里做什么,我都在同一条船上 - 父母的观点不会刷新。
任何人都可以解释原因吗?
提前致谢...