基于集合侦听器运行方法的主干
Backbone running a method based on a collection listener
在我的应用程序中有以下代码,
initialize: function() {
Pops.Collections.TeamCollection = this.collection;
this.collection.fetch();
this.collection.on('sync', this.render, this);
},
render: function() {
this.addAll();
return this;
},
它不言自明,获取集合,一旦它与服务器同步,就运行渲染集合。在编写此代码序列时,这似乎是一个好主意,但是现在看起来,当我保存集合的模型时,它会运行同步侦听器并再次运行 render。这不是我想要的行为。我可以使用另一个侦听器来侦听初始提取是否完成?
根据骨干文档,
Backbone.sync 是 Backbone 每次尝试读取模型或将模型保存到服务器时调用的函数。
该事件本质上是与服务器通信的任何 CRUD 操作的"全部捕获",这就是在保存模型时触发它的原因。深入研究文档提供了有关.fetch()
如何工作的线索
当模型数据从服务器返回时,它使用 set 来(智能地)合并获取的模型,除非您传递 {reset: true},在这种情况下,集合将被(有效)重置。
通过修改对 this.collection.fetch({reset: true})
的调用,集合将加载数据并触发一个可以侦听而不是sync
的 reset
事件。这将解决您的问题。
相关文章:
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- Meteor应用程序无法运行-对象#<编译器>没有方法'主机'
- 使用c#在Web服务器上运行JavaScript方法
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 未能运行构造函数:TypeError:对象#<对象>没有方法'addPlugin'
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- javascript在html元素方法运行setTimeout后返回此消息
- 为什么可以't我从hamsters.js内部运行我的方法
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 在客户端 Javascript 方法之后运行服务器方法
- 为什么 then() 链式方法不按顺序运行
- setInterval 只在对象方法上运行一次
- 运行时错误:对象不支持属性或方法
- JQuery .ajax() 函数调用不起作用,但成功方法运行
- 随着时间的推移,JavaScript 的 setInterval() 方法运行是否会消耗明显的处理能力
- javascript方法运行时显示loading.gif
- 将方法c#运行到javascript中