我已经初始化骨干集合,但在集合上调用调用不起作用。出于某种原因,我得到JS错误:在主干集合上调用调用
var vw = new SomeView(); // A view with function 'refresh'
var col = new Backbone.Collection();
col.add(vw);
...
setTimeout(function(){ col.invoke('refresh'); }, 1000); // Error: Cannot call method 'apply' of undefined
然而,像的isEmpty调用方法工作正常
console.log("Is empty? ", col.isEmpty()); // prints: 'Is Empty? false'
我似乎失去了一些东西很明显。
N.B:我不感兴趣,呼吁每个功能,然后调用视图对象刷新,因为这只是笨拙。
除了骨干网收集的其他好处(比如在对集合进行更改时引发的事件),调用_invoke_等方法使代码更具可读性。我明显的替代方法是使用**每个**方法。无论如何感谢您的帮助。 – Waseem
如果您需要调用,请使用下划线colleection.invoke方法http://documentcloud.github.com/underscore/#invoke –
明白了。你是对的,当添加到集合中时,视图变成了一些模型,因此** invoke **不会找到函数**刷新**,除非您**从内部模型实例中获取**并手动调用它。我已经切换到简单数组作为我的数据存储,并使用下划线的** invoke **方法调用。谢谢您的帮助。 – Waseem