オブザーバブルが更新されたときにオブザーバブルにバインドされた要素を強調表示したいのですが、オブザーバブルのバインディングが開始されたときではありません。
カスタムバインディングを使用してみました:
<div data-bind="updateHighlighting: name, text: name"></div>
<input data-bind="value: name" />
ko.bindingHandlers.updateHighlighting = {
update: function(element, valueAccessor) {
$(element).effect("highlight", 2000);
}
};
var vm = {
name: ko.observable("Diego")
};
ko.applyBindings(vm);
ただし、更新コールバックは、オブザーバブルが更新されたときだけでなく、カスタム バインディングの初期化時にも実行されます。そのため、バインディングの開始時に望ましくない要素が強調表示されます。
次のようなことを行うために、バインディングの初期段階にいる場合、更新コールバック内で知ることができますか?
ko.bindingHandlers.updateHighlighting = {
update: function(element, valueAccessor) {
if(!isInit)
$(element).effect("highlight", 2000);
}
};