在JavaScript中,这种情况下的首选模式是什么?
What is the preferred pattern for this case in JavaScript?
在风格上,我不确定在JavaScript中处理这种情况的最佳方法。
我们从这个开始,如果有以前的模型的话,我们可以得到它的副本。然后,我根据这些值(如果它们可用)创建一个损伤诊断模型。
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,代码更多,更容易阅读,但似乎效率低下。
在这种情况下首选的方法是什么?
选项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);
相关文章:
- 不确定我在PHP AJAX中使用的是什么开发模式
- 将JavaScript检测与MVC4显示模式集成的最佳方式是什么
- 在Backbone.js'上设置属性的模式是什么;模型和视图
- 使用 ES6 模块而不是显示模块模式的额外优势是什么?
- 在 Node.js 中表示状态的普遍接受模式是什么?
- 在vimperator中手动切换到“提示”模式的命令是什么
- 从嵌套数组中获取唯一元素的 JS 模式是什么
- 创建新模型的正确控制器/视图模式是什么
- 在javascript中拆分字符串的正确模式是什么,只留下a-z个单词
- 最好的1-1聊天模式是什么?(AJAX/CI/JQ)
- 使用生成器和迭代器管理流的正确模式是什么
- 文本的正确模式是什么
- 在这个Backbone TodoMVC示例中,这些模式是什么?
- 双64位最小值的位模式是什么?
- 在jquery插件中添加简单的公共方法的最佳模式是什么?
- 在JS模块之间进行数据封送的好模式是什么?
- 开发服务器端node.js的良好架构/模式是什么?
- 这个javascript语法/模式是什么意思
- 执行一段时间后重复的函数的良好模式是什么
- 在JavaScript中,这种情况下的首选模式是什么?