1

以下のコードでは、テスト ボタンをクリックした後、スパン テキストに「テスト クリック済み」と表示されることを期待します。selectedItem.title が更新されていることがわかります。このデータバインドが機能しないのはなぜですか?

http://jsfiddle.net/TheMetalDog/C7k6d/

<button data-bind="click: setItem">Test</button>
Item <span data-bind="text: $root.selectedItem.title"></span>
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>

--

var viewModel = {};
viewModel.selectedItem = ko.observable();

viewModel.setItem = function() {
    viewModel.selectedItem({title: 'clicked'}); 
};

ko.applyBindings(viewModel);
4

1 に答える 1

0

ここには2つのエラーがあります。

1。モデルにバインディングを適用titleし、ボタンをクリックするまで存在しないプロパティを使用します。モデルのプロパティを使用している場合は、バインドする前にそれを定義する必要があります。

viewModel.selectedItem = ko.observable({title: null});

2。()オブザーバブルを使用する場合、それが単なる変数ではなく関数である限り、オブザーバブルの後に置く必要があります。だからあなたは必要です:

<span data-bind="text: $root.selectedItem().title">

そして、あなたはここでそれで遊ぶことができますhttp://jsfiddle.net/fMKPs/

于 2012-11-14T02:43:35.580 に答える