在风格上,我不确定在JavaScript中处理这种情况的最佳方法。
我们从这里开始获取先前模型的副本(如果可用)。然后,我正在创建一个damageDiagnosisModel,如果它们可用,则创建值。
this._previousModel = this.impairmentsCollection.get(this.model.get('id')) || '';
选项1:
this._impairmentDiagnosisModel = new ImpairmentDiagnosisModel({
id: this.model.get('id'),
cdx: (this._previousModel && this._previousModel.get('diagnosis').cdx) || _.first(this._diagnosisClass).id,
nonKeyFactor: this._previousModel && this._previousModel.get('diagnosis').nonKeyFactor,
impairmentValue: this._previousModel && this._previousModel.get('diagnosis').impairmentValue,
side: this._previousModel && this._previousModel.get('diagnosis').side,
digit: this._previousModel && this._previousModel.get('diagnosis').digit
});
选项2:
if(this._previousModel) {
this._impairmentDiagnosisModel = new ImpairmentDiagnosisModel({
id: this.model.get('id'),
cdx: this._previousModel.get('diagnosis').cdx,
nonKeyFactor: this._previousModel.get('diagnosis').nonKeyFactor,
impairmentValue: this._previousModel.get('diagnosis').impairmentValue,
side: this._previousModel.get('diagnosis').side,
digit: this._previousModel.get('diagnosis').digit
});
}
else {
this._impairmentDiagnosisModel = new ImpairmentDiagnosisModel({
id: this.model.get('id'),
cdx: _.first(this._diagnosisClass).id
});
}
使用选项#1,它会使用不必要的空属性来填充模型,但这在这里并不重要。如果服务器收到空属性,则忽略它们。
使用选项#2,它是更多的代码,更容易阅读,但似乎效率低下。
在这种情况下,首选方法是什么?
答案 0 :(得分:2)
选项3:您可以克隆您的_previousModel.get('diagnosis')
对象,然后对其进行修改以添加自定义属性。
例如,
var data = (this._previousModel) ? _.clone(this._previousModel.get('diagnosis')) : {};
data.id = this.model.get('id');
data.cdx = data.cdx || _.first(this._diagnosisClass).id;
this._impairmentDiagnosisModel = new ImpairmentDiagnosisModel(data);