現在、DOM要素のjQueryデータを使用して状態を保存しています。カスタムノックアウトバインディングのためにinitとupdateの間に状態を保存するための好ましい方法は何ですか?
ko.bindingHandlers.customValue = {
init: function init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var state = { isEditing: false };
$(element).focus(function focus() {
state.isEditing = true;
}).blur(function blur() {
state.isEditing = false;
}).data("customBinding", state);
},
update: function update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
// ignore if updating
if (!$(element).data("customBinding").isEditing) {
// handle update if they are not updating
}
}
};
domを必要としないバインドごとに状態を保存する場所がありますか?バインディングの各インスタンスの状態を格納するためにbindingContextを使用できますか?
良い質問です。私はあなたのソリューションは非常に良いと思います。コードのその他の特性を考慮して、さらに強化されているかもしれません。 – Oybek
私はそれをもう一度。すべてのバインドは特定のDOMノードに関連しているため、そのDOMノードにバインドされた関連データを格納することは有効な方法です。 – Niko