我的客户模型的详细信息如下所示
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!
请告知我这里我想念的是什么?为什么克隆后主干获取/设置不起作用?
预先感谢
答案 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的模型实例,这可能导致事件问题。