2012-04-23 13 views
0

KnockoutJSを使用して、observableの初期値のみをDOM要素にバインドするクリーンな方法はありますか?KnockoutJS - 初期値のみをバインドする

私はあなたが観測不可能なものにバインドすることでこれを達成できると知っていますが、別の観測可能なプロパティの初期値を保持するだけの余計なプロパティを作成したいとは思いません。

私は、これを試してみましたが、私は、私はあなたがinitメソッドを提供カスタムバインディングを使用することができると思い、上記Zero21xxxに同意しながら、無駄-に属性は、まだすべての変更

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

ビューモデルの一部であれば余計ではありません。 Knockoutのドキュメントでは、DOMとデータを同期させたい場合にのみ、オブザーバブルを使用するように指示しています。あなたはこの振る舞いを望まないように思えます。私はちょうど普通の古い財産を使うだろう。 – arb

+0

ここに 'style'のサンプルがありますが、同じことが' attr'にも当てはまります:http://jsfiddle.net/rniemeyer/3Pyun/ –

+0

alwats @RPNに感謝します。私はMattの答えを受け入れるでしょう。 –

答えて

1

で更新されます更新方法はありません。

別のプロパティを追加するだけの価値があるのか​​どうかはわかりません。

は、ここで私が何を意味するかの簡単な例です:http://jsfiddle.net/ZkFRu/3/

最初の段落は、プロパティの現在の値を結合し、第二は、初期値をバインドします。ボタンをクリックすると、プロパティがインクリメントされます。

0

最初に拘束されたときに値が注入されるように、括弧を追加することによって、観測値ではなく観測値で直接バインドすることができます。要素が更新されると、バインディングが値にあり、オブザーバブルではない(つまり、値を設定するために観察可能な関数を呼び出す方法がわからない)ため、オブザーバブルは更新されません。

<input type="text" id="tbName" data-bind="value: name()" /> 
関連する問題