Data binding 淘汰3.2部件-罐和x27;t访问foreach绑定内部的组件viewModel根

Data binding 淘汰3.2部件-罐和x27;t访问foreach绑定内部的组件viewModel根,data-binding,knockout.js,knockout-components,Data Binding,Knockout.js,Knockout Components,使用knockout新的3.2组件规范,我试图创建一个组件,其中包含一个foreach绑定,用于呈现对象集合。foreach绑定中的对象需要访问组件的VM上的属性,但在foreach循环中似乎会失去该引用 有没有一种简单的方法可以直接访问组件模板中组件视图模型的根 组件虚拟机: function RelatedCompaniesViewModel(params) { var self = this; self.companies = params.companies;

使用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)  
<!-- ko foreach: companies() -->
    <li data-bind="visible: $index() < $parent.displayLimit()">
       ...more bindings...
    </li>
<!-- /ko -->
组件模板:

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

  • …更多绑定。。。
  • (返回“displayLimit未定义”错误)
    displayLimit()
    更改为
    $parent.displayLimit()

    组件模板:

    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)  
    
    <!-- ko foreach: companies() -->
        <li data-bind="visible: $index() < $parent.displayLimit()">
           ...more bindings...
        </li>
    <!-- /ko -->
    
    
    
  • …更多绑定。。。
  • displayLimit()
    更改为
    $parent.displayLimit()

    组件模板:

    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)  
    
    <!-- ko foreach: companies() -->
        <li data-bind="visible: $index() < $parent.displayLimit()">
           ...more bindings...
        </li>
    <!-- /ko -->
    
    
    
  • …更多绑定。。。
  • displayLimit()
    更改为
    $parent.displayLimit()

    组件模板:

    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)  
    
    <!-- ko foreach: companies() -->
        <li data-bind="visible: $index() < $parent.displayLimit()">
           ...more bindings...
        </li>
    <!-- /ko -->
    
    
    
  • …更多绑定。。。
  • displayLimit()
    更改为
    $parent.displayLimit()

    组件模板:

    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)  
    
    <!-- ko foreach: companies() -->
        <li data-bind="visible: $index() < $parent.displayLimit()">
           ...more bindings...
        </li>
    <!-- /ko -->
    
    
    
  • …更多绑定。。。

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