knockout.js - 您可以在自定义绑定(bind)中设置现有的 Knockout 绑定(bind)吗?

标签 knockout.js custom-binding knockout-3.0

我目前的所有标签看起来都是这样的:

<label data-bind="css: { notdone: FirstName.isModified() && !FirstName.isValid(),
       done: FirstName.isModified() && FirstName.isValid() }">FirstName</label>

我想创建一个自定义绑定(bind)来提取标签之间的重复项,而无需重新实现 CSS 绑定(bind)。

我可以在自定义绑定(bind)中使用 CSS 绑定(bind)吗?

如果没有,那么我将重新发明轮子,以消除一些重复,如下所示:

ko.bindingHandlers.validationLabel =
{
  update: (element, valueAccessor) =>
  {
      var value = valueAccessor();
      var isModified = value.isModified();
      var isValid = value.isValid();

      $(element).removeClass("done notdone");

      if (!isModified)
          return;

      $(element).addClass(isValid ? "done" : "notdone");
  }
}

最佳答案

您可以从您自己的内部调用内置绑定(bind)。像这样的东西应该在你的更新方法中工作来替换你的 jQuery 代码:

ko.bindingHandlers.css.update(element, function() {
    return { done: isValid, notdone: !isValid }
});

具有更多详细信息的相关问题:Can I create a custom binding that uses other bindings in knockout.js

关于knockout.js - 您可以在自定义绑定(bind)中设置现有的 Knockout 绑定(bind)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939774/

相关文章:

javascript - knockout - 问题编辑项目弹出

binding - extjs 5 : make a data binding for component's custom property

java - 如何在 JBoss AS7 中创建自定义字符串 JNDI 绑定(bind)?

javascript - knockout.js 如何在 ko.computed 写入中取消 confirm() 后设置所选选项

javascript - 除非指定 'write' 选项,否则会计算 knockout js 未捕获错误 : Cannot write a value to a ko.。

javascript - ko3中allBindings如何处理

javascript - 在 JavaScript 中为 Knockout Observable 编写类似 C# 的扩展

javascript - 选择选项后无法执行操作

javascript - 如何为每个数组绑定(bind)依赖选择列表

javascript - 具有更新功能的 knockout 自定义选择 Binder