ビューモデルでフィールド (「タイプ」) が変更されるたびに dom 要素を再初期化するために使用されるカスタム バインディングがあります。これは更新コールバックで定義されます。
<input type="text" data-bind="value: Value, initValueField: Type()" />
ko.bindingHandlers.initValueField = {
update:function (element, valueAccessor, allBindingsAccessor, viewModel) {
alert('Hello World');
}
};
簡素化されたデモについては、このjsFiddleを参照してください。
私が理解しているように、更新が呼び出される条件の1つは次のとおりです。
同じ data-bind 属性の別のバインディングがトリガーされたとき。これにより、オプションが変更されたときに値などを適切に保つことができます。
私が抱えている問題は、ビューモデルの値が変更されるたびに、この更新コールバックも呼び出されることです。
だから...次のいずれかが可能ですか:
- バインディングの 1 つがカスタム バインディングを呼び出さないようにします。
- カスタム バインディング内の呼び出し元を検出します。