Sat*_*nix 4 javascript knockout.js
我有一个非常简单的绑定:
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("INIT");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("IT WORKS!");
}
};
Run Code Online (Sandbox Code Playgroud)
用于选择:
<select data-bind="
options: Options,
chosen: Options
"></select>
Run Code Online (Sandbox Code Playgroud)
Options声明为:
this.Options = ko.observableArray(opt1);
Run Code Online (Sandbox Code Playgroud)
并在必要时进行更新,如下所示:
this.Options(newValues);
Run Code Online (Sandbox Code Playgroud)
但是,"IT WORKS"仅记录一次(呈现选择列表时),并且不会再记录一次。看看这个 jsfiddle。尝试按“重新加载”按钮:数组已更新,选择列表重新呈现(耶!),但未调用自定义更新函数(不!)。我什至尝试过强迫,.valueHasMutated但没有成功。
我需要更新功能才能正常工作。为什么这没有发生?
它不会发生,因为您没有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!");
}
};
Run Code Online (Sandbox Code Playgroud)
这里是更新的小提琴:http://jsfiddle.net/wzTg4/8/
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |