克隆模型后主干设置被设置引发错误?

时间:2018-06-27 08:50:47

标签: javascript jquery backbone.js lodash

我的客户模型的详细信息如下所示

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:0 error:&err];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

现在,如果我像下面那样克隆模型

customerModel.FIRST_NAME.get('value'); // this will give some name, works fine!

请告知我这里我想念的是什么?为什么克隆后主干获取/设置不起作用?

预先感谢

1 个答案:

答案 0 :(得分:2)

在_.cloneDeep破折号之后,主干获取/设置不再起作用,因为_.cloneDeep复制对象的属性(即模型的属性),但不是其原型。参见以下示例:

<input type="file" class="lending-sheets" asp-for='LendingSheets[22]'>
<input type="file" class="lending-sheets" asp-for='LendingSheets[39]'>

您要使用的是Backbone.Model's clone function

// Updating the prototype with new properties
var MyModel = Backbone.Model.extend({
  myProperty: 'foo',
  myFunc: _.noop
});
var myModel = new MyModel({value: 'someValue'});
var cloneModel = _.cloneDeep(myModel);
console.log(myModel.get);
// ƒ (e){return this.attributes[e]}
console.log(myModel.myProperty);
// 'foo'
console.log(myModel.attributes.value);
// 'someValue'
console.log(cloneModel.get);
// undefined
console.log(cloneModel.myProperty);
// undefined
console.log(cloneModel.attributes.value);
// 'someValue'

在任何情况下都应执行此操作,即使_.cloneDeep如预期那样工作,您将拥有两个具有相同cid的模型实例,这可能导致事件问题。