0

ページの読み込み時に入力フィールドを空にする必要があります。

ユーザーが「投稿の編集」をクリックすると、KOクリックと「選択」機能が呼び出されます(すべて機能します)。これを行うと、選択された行が正しくバインドされます。

現在のコードは、ページの読み込み時に自動的にバインドされるため、最初のレコードは入力フィールドにあります。

<div data-bind="with: Selected">
    <input type="text" data-bind="value: Name" />
</div>
<i title="Edit Post" data-bind="click: $parent.select"></i>

ハッキングの例

<div data-bind="if **click: $parent.select then** with: Selected">
    <input type="text" data-bind="value: Name" />
</div>

<i title="Edit Post" data-bind="click: $parent.select"></i>

'click' then do 'with: Select' の場合、データバインドを作成するにはどうすればよいですか?

アップデート

サンプルコードを追加: http://jsfiddle.net/uC8Vt/70/

4

2 に答える 2

1

Selected通常、これは観測可能なものから離れて機能することを望んでいます。移入されていない場合、その領域はレンダリングされません。Selected値が設定されている場合は、保持されているオブジェクトが使用されます。

したがって、呼び出すときに、オブジェクト$parent.selectを設定する必要がSelectedあります。

実際、オブザーバブルは関数であるため、他のロジックを実行する必要がない限り、ショートカットを使用してオブザーバブルにclick直接バインドすることもできます。Selected現在のデータは、オブザーバブルの値を設定する最初の引数として渡されます。

于 2013-01-26T02:47:01.467 に答える
0

クリックした項目に応じて Selected プロパティを変更します...

したがって、viewModelの例は次のようになります...

var items = [{ Name: 'item1' }, { Name: 'item2' }];

var viewModel = {
    items: items,
    Selected: ko.observable(items[0])
}

viewModel.select = function(selectedItem) {
    // The first arg is the context of the item clicked
    // Selected in an observable
    viewModel.Selected(selectedItem);
};

次に、Selected が変更されると、Name バインディングが自動的に更新されます。

于 2013-01-26T08:12:38.257 に答える