2

as値name = ko.observable('John')にバインドされているとしましょう。変更された場合はinput表示する必要があります(前に非表示)。したがって、名前をからに編集すると、保存ボタンが表示され、編集して戻すと、再び非表示になります。ここでどのようなバインディング/拡張を適用できるかについて何かアイデアはありますか? まことにありがとうございます!<button>Save</button>nameJohnJackJohn

4

1 に答える 1

3

必要なのはダーティトラッキングと呼ばれます。

ダーティフラグの実装を含むKoLiteと呼ばれるkoプラグインがあります(この記事でどのように機能するかについて読むことができます):

ko.DirtyFlag使用法は非常に簡単で、オブザーバブルを(計算されたオブザーバブルを返す)メソッドに渡す必要があります。

var ViewModel = function() {
    var self = this;
    self.name = ko.observable('John');
    self.dirtyFlag = new ko.DirtyFlag(self.name);
}

そして、あなたの見解では、あなたはあなたのisDirtyプロパティにバインドすることができますdirtyFlag

<input type="text" data-bind="value: name, valueUpdate: 'keyup'"/>
<div data-bind="if: dirtyFlag().isDirty">
    <button>Save</button>
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

デモフィドル。

于 2012-11-10T13:05:08.853 に答える