2016-06-16 5 views
0

ノックアウトを使用すると、ビューモデルを変更するとビューが更新され、ビューを更新してもビューモデルは更新されません。モデルからビューへのノックアウト一方向バインディング

URLからパラメータを取得したり、ソースからデータを取得したり、ビューモデルにデータを入力したり、フォーム(ビュー)にデータを入力するためにルーティングエンジンを使用しています。しかし、私はユーザーがフォームの値を変更したときにビューモデルを更新したくありません - ルーティングエンジンをトリガーするURLを更新するフォームを「送信」して欲しいです...

Iフォームの要素がフォーカスを失ったときにビューモデルを更新するdata-bind="value: MyValue"data-bind="attr: {value: MyValue}")キーストロークあたりのビューモデルを更新するdata-bind="textInput: MyValue"を試行しましたが、最初のバインドで機能しますが、ビューモデルの値を変更してもビューは更新されません。

私がしたいと思うデフォルトバインディングはありますか?その他のアプローチは?

ありがとうございます!

答えて

2

ノックアウトでプロパティを実行すると、バインディングは片方向/読み取り専用になります。ですから、例えば以下のモデルで:

var Person = function(data){ 
    var self = this; 
    self.FirstName = ko.observable(data.FirstName); 
    self.LastName = ko.observable(data.LastName); 
    self.FullName = ko.computed(function(){ 
     return self.FirstName() + " " + self.LastName() 
    }); 
} 
myData = { FirstName: "John", LastName: "Smith" } 
var me = new Person(myData); 

ko.applyBindings(me); 
私は/姓を一本の道を作るだけで結合して、それを実行することにより、専用のプロパティを読み取ることができ

:最初の入力のみが値を取得しますだから今

<input data-bind="value: FirstName()"> 
<input data-bind="value: LastName"> 
<label data-bind="text: FullName"></label> 

それを設定することはできませんが、2番目の入力は双方向バインディングを持ち、LastNameプロパティを更新します。

+0

これは、完璧に、ありがとう!そんなに学ぶ... – AndrewP

関連する問題