我有一个Backbone模型,其中有某些属性,如
test_id
test_name
test_desc
test_score
现在我想要检索以" test _" 开头的属性。
我尝试使用下面的代码并且工作正常。
var MyModel = Backbone.Model.extend({
getTestProperties: function(str){
// get clone of attributes to iterate over
var testProperties = {};
var attrs = _.clone(this.attributes);
_.each(attrs, function(val, key){
if(key.indexOf(str) == 0){
testProperties[key]= val;
}
}, this);
}
});
但是 有没有其他方法可以使用下划线方法获得这些属性?
由于
答案 0 :(得分:2)
Backbone代理some methods from Underscore on models可以帮助您创建更具可读性的_.filter
:_.keys
和_.pick
然后您可以像这样简化您的功能:
var MyModel = Backbone.Model.extend({
getTestProperties: function (str) {
// get the keys you want
var keys = _.filter(this.keys(), function (key) {
return key.indexOf(str) === 0;
});
// and build an object
return this.pick(keys);
}
});
答案 1 :(得分:1)
尝试类似
的内容var attrs = _.filter(_.keys(_.clone(this.attributes)), function(attr){
return attr.indexOf("text_") === 0;
});