javascript - 自定义绑定(bind)中的条件更新

标签 javascript knockout.js custom-binding

我有一个自定义绑定(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 模型上的值发生变化时,也会调用此更新回调。

那么...是否可以:

  1. 禁止其中一个绑定(bind)调用自定义绑定(bind)。
  2. 检测自定义绑定(bind)内的调用源。

最佳答案

我在这里找到了解决该问题的潜在解决方法:

Knockout.js Performance Gotcha #3 - All Bindings Fire Together

选项是:

  1. 通过将绑定(bind)放置到单独的元素(可能是容器元素)上来拆分绑定(bind)。
  2. 与第 1 点类似,但使用无容器绑定(bind)将它们分开。
  3. 在自定义绑定(bind) init 中使用计算的可观察量来手动管理更新。

关于javascript - 自定义绑定(bind)中的条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563694/

相关文章:

knockout.js - 观察\更新 ObservableArray 中的数据

asp.net-mvc-3 - MVC 将 JSON ViewModel 传递给 View

javascript - 在 knockout.js 中为 nl2br 创建自定义绑定(bind)

javascript - 我怎样才能在 ng-repeat 中创建一个点击事件只重新渲染受影响的项目(即不运行 $apply)?

javascript - forEach() 是异步的吗?

javascript - Jquery 日期验证错误

web-services - 具有自定义绑定(bind)的 WCF REST 服务的 SSL 配置

javascript - 从不在当前分页上的文本框中检索值 - 数据表

knockout.js - KnockoutJS 自定义绑定(bind)多次触发

knockout.js - Google Chart API 的 knockout 自定义绑定(bind) - 访问被拒绝