【问题标题】:Knockout 3.2 Components - can't access component viewModel root inside foreach binding淘汰赛 3.2 组件 - 无法访问 foreach 绑定中的组件视图模型根
【发布时间】:2014-11-04 21:31:22
【问题描述】:

使用 knockout 的新 3.2 组件规范,我正在尝试创建一个内部带有 foreach 绑定的组件,以呈现对象集合。 foreach 绑定中的对象需要访问组件 VM 上的属性,但似乎在 foreach 循环中丢失了该引用。

有没有一种简单的方法可以直接访问其模板中组件视图模型的根?

组件虚拟机:

function RelatedCompaniesViewModel(params) {
    var self = this;

    self.companies = params.companies;
    self.displayLimit = ko.observable(3);

} 

组件模板:

<!-- ko foreach: companies() -->
    <li data-bind="visible: $index() < displayLimit()">
       ...more bindings...
    </li>
<!-- /ko -->

(returns a "displayLimit is not defined" error)  

【问题讨论】:

  • 与以前的方法类似,使用可用的binding context 属性之一。在这种特殊情况下,$parent$root 将起作用。
  • facepalm 甚至不知道 $parent 上下文存在。上面列出的整个模块嵌套在另一个组件中,因此 $root 不起作用。很有帮助,谢谢。

标签: data-binding knockout.js knockout-components


【解决方案1】:

displayLimit() 更改为$parent.displayLimit()

组件模板:

<!-- ko foreach: companies() -->
    <li data-bind="visible: $index() < $parent.displayLimit()">
       ...more bindings...
    </li>
<!-- /ko -->

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2013-05-31
    • 1970-01-01
    • 2014-05-29
    • 2015-03-17
    • 1970-01-01
    相关资源
    最近更新 更多