【问题标题】:Multiple Custom Data-Binds on same DOM element同一个 DOM 元素上的多个自定义数据绑定
【发布时间】:2014-05-21 14:51:28
【问题描述】:

已搜索但在其他地方找不到答案...

我有一系列自定义的 Knockout 绑定处理程序,并试图在一个 DOM 元素上运行三个不同的处理程序。

例如

data-bind="heightToContentSize:'scroll', toggletargethover:'pageWrapper', className:'removeArrows'"

问题是,Knockout 只执行第一个,而忽略其余的。控制台中没有错误。我的印象是,您可以在一个 DOM 元素上使用无限数量的唯一绑定处理程序,前提是它们用逗号分隔。

你能像我上面所说的那样用逗号链接自定义数据绑定吗?我在上面的陈述中的逻辑不正确吗?

【问题讨论】:

  • 浏览器控制台有什么错误吗?
  • 浏览器控制台没有错误,完美通过。我假设 Knockout 忽略了链接的绑定处理程序,因此没有显示错误。
  • 所有绑定都注册了knout吗?
  • 是的。如果您自己绑定它们,它们将起作用。但是当我开始将它们链接到 DOM 元素时,只有第一个会触发。
  • 我不知道为什么它现在不起作用。当您注册绑定处理程序时,它会被添加到淘汰赛的默认绑定处理程序中。所以它与在元素上拥有多个默认绑定(如文本、css、点击)确实应该没有什么不同。

标签: javascript jquery data-binding knockout.js


【解决方案1】:

奇怪 - 但问题是 Knockout 没有忽略数据绑定语法中的空格。 IE。如果我做了这样的事情......

data-bind="heightToContentSize:'something',click:referrerUrl"

不是这样的

data-bind="heightToContentSize:'something', click:referrerUrl"

(注意逗号后面的空格)

然后它会工作。但是 Knockout 应该忽略我认为的所有空格? http://knockoutjs.com/documentation/binding-syntax.html

【讨论】:

    【解决方案2】:

    试试:

    data-bind="heightToContentSize:scroll, toggletargethover:pageWrapper, className:removeArrows"
    

    或者:

    data-bind="heightToContentSize:scroll(), toggletargethover:pageWrapper(), className:removeArrows()"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多