Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 使用下划线.js获取以特定文本开头的主干模型的属性_Backbone.js_Underscore.js - Fatal编程技术网

Backbone.js 使用下划线.js获取以特定文本开头的主干模型的属性

Backbone.js 使用下划线.js获取以特定文本开头的主干模型的属性,backbone.js,underscore.js,Backbone.js,Underscore.js,我有一个主干模型,其中有一些属性,比如 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 = {}

我有一个主干模型,其中有一些属性,比如

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);
    }
});
但是 是否有其他方法可以使用下划线方法获取这些属性

谢谢

试试类似的东西

var attrs = _.filter(_.keys(_.clone(this.attributes)), function(attr){
  return attr.indexOf("text_") === 0;
});
可以帮助您创建更可读的主干代理:和

然后,您可以简化您的函数,如下所示:

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);
    }
});
还有一个演示