2012-10-04 32 views
3

我很困惑ko.computed。不知道何時使用它。我有2個陳述。你能向我解釋什麼是什麼區別以及何時使用它們?knockoutJs,何時使用ko.computed

self.fullName = ko.computed(function() { 
    return self.firstName() + " " + self.lastName(); 
}); 


self.fullName = function() { 
    return self.firstName() + " " + self.lastName(); 
}; 

回答

5

對於顯示fullName,這些選項中的任何一個都會導致相同的結果。計算與函數更好的區別在於,您可以分配讀取和寫入子函數。這樣你就可以用計算值而不是單獨的函數來改變觀測值。

fiddle中,你可以看到如果你改變firstName或lastName,兩者都會改變。但是,如果您更改計算出的名字或姓氏,它會更改該名稱和該函數。更多示例請參閱computed documentation

+0

非常感謝您在小提琴上展示您的代碼。現在我明白了這兩者之間的區別。 – qinking126

0

區別在於,當您使用ko.computed時,如果綁定到fullName,則只要firstName或lastName發生更改,就會自動更新fullName。沒有ko.computed,你必須自己動手。

+0

請糾正我,如果我錯了,如果我改變了名字的值,網頁會自動更新全名。如果我不使用ko.computed,我需要調用全名來更新值。 – qinking126

+0

是的。確實如此。 –

+2

顯示沒有區別 – Rynan