【发布时间】: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