【问题标题】:Using applyBindingAccessorsToNode in custom binding在自定义绑定中使用 applyBindingAccessorsToNode
【发布时间】:2016-04-29 06:50:02
【问题描述】:

我正在制作一个绑定,以简化根据布尔值添加 CSS 类的过程。我想使用applyBindingAccessorsToNode,因为它看起来比在新绑定中调用原生css 绑定的.init.update 更干净。

我的问题是如何使用valueAccessor,因为绑定似乎被错误地解析,具体取决于提供的值是可观察的、对象还是评估的可观察的。

绑定是这样的:

ko.bindingHandlers.ignoreValidation = {
    init(element, valueAccessor, allBindings, viewModel, bindingContext) {
        ko.applyBindingAccessorsToNode(element, { css: { ignoreValidation: valueAccessor() } }, bindingContext);
    }
}

这会导致错误([object Object] 显然是无意的)

Message: Unable to process binding "ignoreValidation: function (){return showLookup }"
Message: Unable to process binding "css: [object Object]"
Message: d is not a function

TL;DR;我想在不同时使用updateinit 的情况下以编程方式向元素添加绑定。

【问题讨论】:

    标签: knockout.js knockout-3.0


    【解决方案1】:

    使用ko.applyBindingsToNode 按预期工作:

    ko.bindingHandlers.ignoreValidation = {
      init(element, valueAccessor, allBindings, viewModel, bindingContext) {
        ko.applyBindingsToNode(
            element, 
            { css: { ignoreValidation: valueAccessor() }}, 
            bindingContext);
      }
    }
    

    可以在this fiddle 中找到一个工作示例。

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2016-01-02
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2011-06-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多