我有以下骨干模型
var Parent = Backbone.Model.extend({
defaults: {
id: '',
name: ''
}
});
var Child = Parent.extend({
defaults: {
color: '',
shape: '',
isValid: false
});
现在我有“Child”模型的以下对象
var child = new Child({
id: '101',
name: 'Abc',
color: 'White',
shape: 'Square',
isValid: true
});
我需要使用这个“Child”模型对象创建一个“Parent”模型对象,我执行了以下操作:
var json = convertToJSON(child);
var parent = new Parent(json);
但是这里“Child”模型的属性也填充到“Parent”模型的父对象中。有没有办法只填充适用于这个新对象中“父”模型的那些属性?我不想使用“删除”来删除不适用的属性。
答案 0 :(得分:1)
您可以在子模型上使用pick
方法来获取必需的属性
var json = child.pick('color', 'shape');
var parent = new Parent(json);
它将返回一个可以传递给父模型的对象。 您可以阅读更多相关信息here
或者你也可以使用es2015 destructive assignment,但是你需要Babel转换器。
const {color, shape} = child;
const parent = new Parent({color, shape});
答案 1 :(得分:1)
_.pick
代理您的子对象child.pick
来选择特定属性,Parent.defaults
的键以确定您需要的内容这转化为:
var parent = new Parent(
child.pick(_.keys(Parent.prototype.defaults))
);