我有一个很好的流程来加载/渲染一个集合,为该集合添加一个新模型,通过API将新模型同步回数据库,然后重新渲染我的集合...但我是遇到一个我无法解决的问题:
是否有标准的"Backbone"方式在"创建/同步到后端 - >成功"事件中插入回调,还是应该覆盖创建功能?我可以使用"添加"方法(无论何时将新模型添加到dom上的集合/渲染时都会被ping通),但是当在页面加载时填充每个模型时它会触发...我真的只想要它当用户在页面已经呈现后创建/插入新模型时.
编辑:如果其他人有这个问题,下面与Elf来回导致我提出以下解决方案:
只需coll.trigger("newModelCreated", nextModel);在Backbone.collection.create中的成功回调中添加一些内容- 然后将事件绑定到与该集合关联的视图中的触发器(因此,在我的视图的初始化函数中)this.collection.bind('newModelCreated', this.createAndAdd, this);.
然后,当触发器被触发时,我只是将它路由到我的"addOne"函数的特殊版本(我已经配音createAndAdd),它渲染了我的新模型+我希望与新创建的模型相关联的其他DOM内容.
不确定是否是最佳解决方案,但它对我有用.
谁负责为正在创建的对象分配唯一键(ID)?服务器还是客户端?我的经验是,服务器是 ID 的最终仲裁者,因为它有责任在客户端关闭后存储它们。
我通常的做法是使用集合的 URL 作为目标,让模型自行保存。服务器应该足够聪明,能够将对集合的 POST 识别为“新对象”,并且服务器返回带有 ID 的已保存对象,然后新模型会拾取该 ID。然后,您可以将模型添加到集合中,而不必重写集合的add()方法。(显然,当您向集合添加某些内容时,该集合的任何侦听器都将获取该collection.add事件,该事件反过来应该触发该集合的可见显示的渲染。)
| 归档时间: |
|
| 查看次数: |
3528 次 |
| 最近记录: |