Knockout JS - многомерный observableArrays и отображение данных подмассива - PullRequest
4 голосов
/ 12 марта 2012

Я уже почти сошел с ума по этому поводу и подумал, что все будет просто, но, должно быть, я чего-то упускаю ...

У меня есть многомерный массив в массиве ko.observableArray, в котором так:

Сайт -> Компания -> Работа

Для моих привязок данных, data-bind="text: Site().Name" - это нормально, как и следовало ожидать. Однако я не могу получить доступ к подмассивам с помощью data-bind="text: Site().Company().Name" или data-bind="text: Site().Company.Name".

У кого-нибудь еще была такая же проблема, или я что-то делаю совершенно неправильно? Объекты на 100% загружаются в массив правильно, как я вижу их в консоли.

1 Ответ

9 голосов
/ 12 марта 2012

Если я правильно понимаю вашу проблему и Site содержит observableArray из Company объектов, а каждый Company объект содержит observableArray из Job объектов, то ваш подход не будет работать.

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.

Надеюсь, это то, что вы ищете, и извинения, если я неправильно понял ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...