【问题标题】:How can a Knockout binding be applied to the <html> element?如何将 Knockout 绑定应用于 <html> 元素?
【发布时间】:2017-01-10 18:12:53
【问题描述】:

我想使用自定义的 Knockout bindinghandler 动态设置根元素的字体大小,它会根据浏览器窗口的宽度进行计算。

当我尝试应用绑定时,似乎什么也没发生,所以我尝试应用一个简单的 css 绑定:

&lt;html data-bind="css: { bindinghandlertest: true }"&gt;

但绑定处理程序似乎没有添加类。

问题:KO 绑定只能应用于&lt;body&gt; 及其子级吗?

注意:我通过在 DOM 就绪时调用 ko.applyBindings(); 来初始化整个页面上的所有绑定,根本没有任何参数。

【问题讨论】:

  • 出于好奇,您是否出于某种原因不想使用 CSS 媒体查询来执行此操作?
  • 即使这是可能的,这也不是这个问题的意义所在。这正是让我偶然发现这个问题的原因。
  • 有可能。这是媒体查询的主要用例之一:根据浏览器的宽度应用不同的 CSS。我知道你问的是 Knockout,但在这里提供另一种解决方案是相当标准的 MO
  • 这能回答你的问题吗? How to get the data-id attribute?

标签: knockout.js knockout-binding-handlers


【解决方案1】:

您可以按照here 的说明将绑定应用到特定的 html 元素

具体来说:

您可以选择传递第二个参数来定义哪个部分 要搜索数据绑定属性的文档。例如, ko.applyBindings(myViewModel, document.getElementById('someElementId'))

在你的情况下,你可以打电话给他们

ko.applyBindings(myVM, document.documentElement);

默认情况下,DOM节点是body,从source可以看到:

根节点 = 根节点 || window.document.body; // 制作“根节点” 参数可选

【讨论】:

  • 所以在无参数ko.applyBindings()的情况下,Knockout不会搜索html元素?
  • 编辑了我的答案。顺便说一句,感谢首先修复它的人
猜你喜欢
  • 2017-01-20
  • 2013-09-21
  • 2020-03-12
  • 2015-08-15
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2018-06-04
相关资源
最近更新 更多