2013-01-10 35 views
0

從文體上看,我不確定在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,它更多的代碼和更容易閱讀,但似乎效率低下。

這種情況下的首選方法是什麼?

+0

應該不是你的車型是無知的海誓山盟? – Shmiddty

+0

@Shmiddty它用於使用從本地存儲中檢索的以前保存的數據填充UI – Brandon

+1

始終有利於可讀性。 – Mathletics

回答

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); 
+0

好吧,我不覺得愚蠢。感謝一個明顯的答案,這是完全正確的。 – Brandon

+0

@Brandon別擔心,它會發生:) – nikoshr