Ben*_*min 3 javascript collections backbone.js
要通过它的ID从集合中获取单个模型,我可以调用
var myObject = myCollection.get(id)
Run Code Online (Sandbox Code Playgroud)
当我有一个我希望获得的几个模型的ID列表时,是否有更好的方法从集合中获取它们而不是分别为每个id调用.get()?
下面的代码片段可以完成这项工作,但对集合的大量请求似乎有些混乱.
var idList = new Array(34, 86, 167, 413);
var models = new Array();
for (var i = 0; i < idList.length; ++i) {
models.push(myCollection.get(idList[i]));
}
Run Code Online (Sandbox Code Playgroud)
谢谢
- 本
实际上它根本不是凌乱的,你只是打电话收集4次.即使Backbone允许你一次"获取"多个id,但在事情的后端它仍然会做同样多的工作.
你也许可以重写一些东西,这样它们在眼睛上会更容易一些,但这更符合你的个人偏好.我可能会使用替代形式的数组和循环表示法来做这样的事情.
var ids = [34, 86, 167, 413];
var selected = [];
for (var i in ids)
selected.push(myCollection.get(ids[i]));
Run Code Online (Sandbox Code Playgroud)
如果你要做很多事情,并希望让它看起来更干净,你可以使用过滤器返回像mu提到的较小的集合.
filterBy: function(attribute, value) {
var filtered = this.filter(function(items) {
return _.contains(value, items.get(attribute));
});
return new myCollection(filtered);
}
var newFilteredCollection = myCollection.filterBy('id', [34, 86, 167, 413]);
Run Code Online (Sandbox Code Playgroud)