2012-04-23 74 views
0

有沒有一種乾淨的方式來使用KnockoutJS僅將observable的初始值綁定到dom元素?KnockoutJS - 只綁定初始值

我知道你可以通過綁定到一個不可觀察的元素來實現這一點,但我寧願不創建一個多餘的屬性來保存另一個可觀察屬性的初始值。

我想這一點,但都無濟於事,屬性仍與每一個變化

<input type="text" id="tbName" 
    data-bind="value:name, attr: { 'data-initialnamevalue': ko.utils.unwrapObservable($data.name()) }" /> 
+2

如果它是視圖模型的一部分,它不是多餘的。關於Knockout的文檔說只有在DOM和數據保持同步時才使用observables。這聽起來像你不想要這種行爲。我只是使用普通的舊物業。 – arb 2012-04-23 20:30:50

+0

這裏是'style'的例子,但是'attr'也一樣:http://jsfiddle.net/rniemeyer/3Pyun/ – 2012-04-23 20:39:21

+0

謝謝@ albert @RPN - 我會把這個評論當作證據,證明沒有直接的方式,所以我會接受馬特的答案。 – 2012-04-23 20:42:11

回答

1

雖然我上面Zero21xxx同意,我想你可以使用自定義的結合,其中您提供一個init方法更新,但沒有更新方法。

不知道這是值得的努力與只是添加另一個屬性。

這裏是我的意思一個簡單的例子:http://jsfiddle.net/ZkFRu/3/

第一款結合屬性的當前值,第二個綁定的初始值。點擊按鈕增加屬性。

0

您可以通過添加括號直接綁定到observable值而不是observable,以便在第一次綁定時注入該值。當元素更新時,它不會更新觀察值,因爲綁定是在值而不是可觀察值(即不知道如何調用observable函數來設置值)。

<input type="text" id="tbName" data-bind="value: name()" />