我有一个自定义绑定(bind),用于在 View 模型上的字段(“类型”)发生更改时重新初始化 dom 元素。这是在更新回调中定义的。
<input type="text" data-bind="value: Value, initValueField: Type()" />
ko.bindingHandlers.initValueField = {
update:function (element, valueAccessor, allBindingsAccessor, viewModel) {
alert('Hello World');
}
};
查看此jsFiddle一个精简的演示。
据我了解,调用更新的条件之一如下:
The mechanics of custom bindings
Any time that another binding in the same data-bind attribute is triggered. This helps ensure things like the value is appropriate when the options are changed.
我遇到的问题是,每当 View 模型上的值发生变化时,也会调用此更新回调。
那么...是否可以:
- 禁止其中一个绑定(bind)调用自定义绑定(bind)。
- 检测自定义绑定(bind)内的调用源。
最佳答案
我在这里找到了解决该问题的潜在解决方法:
Knockout.js Performance Gotcha #3 - All Bindings Fire Together
选项是:
- 通过将绑定(bind)放置到单独的元素(可能是容器元素)上来拆分绑定(bind)。
- 与第 1 点类似,但使用无容器绑定(bind)将它们分开。
- 在自定义绑定(bind)
init
中使用计算的可观察量来手动管理更新。
关于javascript - 自定义绑定(bind)中的条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563694/