我正在分析基本的todo应用程序。
为什么当我删除StatsView
(来自主todos.js和todos.handlebars)时,remaining
的{{1}}方法(属性)会停止更新?
todoListController
我可以想象,这是因为Todos.todoListController = SC.ArrayController.create({
...
remaining: function() {
console.log('remaining');//doesn't apear in the console
return this.filterProperty('isDone', false).get('length');
}.property('@each.isDone').cacheable(),
...
});
我删除了绑定。但不应该是StatsView
关注变化吗?
答案 0 :(得分:0)
SproutCore优化尽可能少的工作。因此,当您删除StatsView时,您删除了关注.remaining
属性的内容。由于没有任何要求,SproutCore不会计算它。这就是为什么在访问属性时应始终使用get()
和set()
方法,以便他们可以决定是使用缓存版本还是实际计算属性。