Ino*_*ble 1 javascript backbone.js backbone.js-collections
我有这个漂亮的函数遍历集合中的模型以获取属性和值.如果找到该值则返回true.
在浏览了很多文档之后,我仍然对如何正确遍历集合以及如何搜索它感到困惑.由于underscorejs(在我的情况下是lodash)被挂钩到主干上,我会用.each遍历集合
之后我没有放入其他if (model.get(attribute)===value)因为它会在遍历整个集合之前返回false.回调函数听起来像是不必要的并发症 - 但也许我错了(我几个月前开始使用JS)
我会很高兴提示和/或更好的解决方案;-)与explonation.提前致谢.
我使用requirejs,为什么我通过_,Bacbkone ......
以下是Collection的外观:
function (_, Backbone, AppModels) {
var QueriesCollection = Backbone.Collection.extend({
model : AppModels.QueryModel,
search: function (attribute, value) {
var found = false;
this.each(function (model) {
if (model.get(attribute)===value) {
found = true;
}
});
return found;
}
});
return {
QueriesCollection: QueriesCollection
};
});
Run Code Online (Sandbox Code Playgroud)
您也可以使用Underscore some(aka any),它几乎与您的search函数相同,除了它使用函数参数作为其谓词,而不是键/值:
如果列表中的任何值通过迭代器真值测试,则返回true.如果找到true元素,则短路并停止遍历列表.
实现使用它有点直接:
search: function (attribute, value) {
return this.some(function(x) {
return x.get(attribute) === value;
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |