(使用Backbone 0.9.10)
我有一个列表视图,用户可以单击按钮显示模态视图。列表视图有一个计数器,显示列表中包含的项目数量。单击模态视图中的按钮会对传递到两个视图的集合执行create
。这会在列表视图中触发add
事件,而该事件又会运行此功能:
renderCount: function () {
// Container for model count
var $num = this.$el.find('.num');
if ($num.length > 0) {
// 'count' is a value returned from a service that
// always contains the total amount of models in the
// collection. This is necessary as I use a form of
// pagination. It's essentially the same as
// this.collection.length had it returned all models
// at once.
$num.html(this.collection.count);
}
}
但是,在集合有机会更新模型计数之前,add
似乎会立即被解雇(因为应该是,根据文档)。我调查了sync
,但似乎没有做任何事情。
如何确保在调用renderCount
之前更新集合?
以下是列表视图initialize
函数,供参考:
initialize: function (options) {
this.collection = options.collection;
this.listenTo(this.collection, 'add remove reset', this.renderCount);
this.render();
}
修改
事实证明我忘了在模态视图中重新获取success
上的集合。
答案 0 :(得分:0)
$num.html(this.collection.count);
应该是:
$num.html(this.collection.size());
Backbone.Collection使用从下划线导入的方法,这里是list:http://backbonejs.org/#Collection-Underscore-Methods
答案 1 :(得分:0)
原来我忘记在模态视图中重新获取success
上的集合。