Javascript 自定义绑定到不调用更新函数的可观察数组
我有一个非常简单的绑定:Javascript 自定义绑定到不调用更新函数的可观察数组,javascript,knockout.js,Javascript,Knockout.js,我有一个非常简单的绑定: ko.bindingHandlers.chosen = { init: function (element, valueAccessor, allBindingsAccessor, viewModel) { console.log("INIT"); }, update: function (element, valueAccessor, allBindingsAccessor, viewModel) { conso
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("INIT");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("IT WORKS!");
}
};
用于选择:
<select data-bind="
options: Options,
chosen: Options
"></select>
并在必要时更新如下:
this.Options(newValues);
但是,“它起作用”
只记录一次(在呈现选择列表时),并且不再记录。看见试着按下“重新加载”按钮:数组被更新,选择列表被重新呈现(耶!),但是自定义更新函数没有被调用(不!)。我甚至试图强制。值发生了变异
,但没有成功
我需要更新功能才能正常工作。为什么没有发生这种情况?之所以没有发生这种情况,是因为在更新函数中没有使用
valueAccessor
。如果您使用它,您将触发update
函数:
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("INIT");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = ko.unwrap(valueAccessor());
console.log("IT WORKS!");
}
};
这是最新的提琴:我能给你造一尊雕像吗?
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("INIT");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = ko.unwrap(valueAccessor());
console.log("IT WORKS!");
}
};