0

スタイル的には、JavaScript でこのケースを処理する最善の方法がわかりませんでした。

これを使用して、以前のモデルのコピーを入手できる場合はそれを取得します。次に、利用可能な場合は値に基づいて ImpairmentDiagnosisModel を作成しています。

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 を使用すると、コードが増えて読みやすくなりますが、効率が悪いようです。

この場合、どのような方法が望ましいでしょうか?

4

1 に答える 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);
于 2013-01-10T17:14:32.160 に答える