2014-03-04 37 views
0

我的模型是从骨干模式阵列属性删除元素

var Storage = Backbone.Model.extend({ 
    defaults: { 
     q_category_id : 2, 
     dimension: [] 
    } 
}); 

我充满名为storageInfo模型实例与

{ 
    "q_category_id":2, 
    "dimension":[ 
     {"q_id":1,"q_text":"...","data_type":"1","meta":"15","answer":"152"}, 
     {"q_id":2,"q_text":"...","data_type":"1","meta":"30","answer":"302"}, 
     {"q_id":3,"q_text":"...","data_type":"1","meta":"60","answer":"602"} 
    ] 
} 

,但发送到服务器之前,我希望模型是像这样:

{ 
    "q_category_id":2, 
    "dimension":[ 
     {"q_id":1,"answer":"152"}, 
     {"q_id":2,"answer":"302"}, 
     {"q_id":3,"answer":"602"} 
    ] 
} 

如何删除属性如q_text,datatypemeta从我的模型的dimension数组?

+1

小心在'defaults'可变对象,引用复制到根据需要,而不是克隆所以新车型您的“维度”数组会受到惊人的参考共享。在这种情况下,'defaults:function(){return {...}}是更好的方法。 –

回答

1

您可以使用下划线mappick方法来做到这一点相当简洁:

storageInfo.dimensions = _.map(storageInfo.dimensions, function(obj) { 
    return _.pick(obj, 'p_id', 'answer'); 
}); 
1

您可以保存模型,采用顺位被net.uk.sweet的建议之前,通过迭代的尺寸。 否则,试图改变这种模式的toJSON方法,所以它总是返回字段,你宁愿:

var Storage = Backbone.Model.extend({ 
    defaults: { 
    q_category_id : 2, 
    dimension: [] 
    }, 
    toJSON: function() { 
    var dims = _.pick(this.get('dimensions'), ['q_id', 'answer']); 
    return {q_category_id: this.get('q_category_id'), dimensions: dims} 
    } 
});