Knockout JS - 多维observableArrays并显示子数组数据

时间:2012-03-12 16:01:18

标签: javascript jquery mvvm knockout.js

我现在已经接近解决这个问题,并认为这很简单,但是,必定会有一些我遗漏的东西......

我在ko.observableArray中有一个多维数组,其中是:

网站 - >公司 - >工作

对于我的数据绑定,data-bind="text: Site().Name"很好,正如您所期望的那样。但是,我无法通过data-bind="text: Site().Company().Name"data-bind="text: Site().Company.Name"访问子数组。

有没有其他人有同样的问题,或者有什么我做错了吗?这些对象100%正确加载到数组中,因为我可以在控制台中看到它们。

1 个答案:

答案 0 :(得分:9)

如果我正确理解您的问题并且Site包含一个Company个{oborableArray对象,并且每个Company对象包含一个Job对象的observableArray,那么您的方法将不会工作。

data-bind="text: Site().Company().Name"正在尝试获取恰好包含Name个对象的observableArray的Company属性。但是,您可以写data-bind="text: Site().Company()[0].Name"来获取第一个Company的名称。

更常见的方法是遍历项目。类似的东西:

<!-- ko with: Site -->
Site name is <span data-bind="text: Name"/>
<ul>
  <!-- ko foreach: Company -->
    <li>Company name is <span data-bind="text: Name"/>
      <!-- ko foreach: Job -->
        <li>Job name is <span data-bind="text: Name"/>
        </li>
      <!-- /ko -->
    </li>
  <!-- /ko -->
</ul>
<!-- /ko -->

有关详细信息,请参阅http://knockoutjs.com/documentation/foreach-binding.html

如果我误解了你的问题,希望这就是你要找的并道歉。