KnockoutJS вложенный foreach не определен

Я буду краток. Моя модель представления выглядит так:

var ViewModel = {
    Cameras: ko.observableArray(),
    Current: ko.observableArray()
};

и я хочу сделать что-то вроде этого:

<!-- ko foreach: Cameras -->
    <div data-role="collapsible">
        <h3 data-bind="text: CameraName"></h3>
        <!-- ko foreach: Current -->
            <img data-bind="attr: { src: URL }" />
        <!-- /ko -->
    </div>
<!-- /ko -->

Свойство CameraName из массива Cameras, а свойство URL из массива Current, но когда я это делаю, я получаю «Current is notdefined». Я просмотрел вложенный foreach, но должно быть что-то, чего я не понимаю должным образом.


person judehall    schedule 02.06.2012    source источник


Ответы (1)


Current должно быть свойством элемента в Cameras.

Вот так...

var Camera = function() {
    this.Current = ...
}

Вы можете попробовать $parent Knockout 2.1.

<!-- ko foreach: Cameras -->
    <div data-role="collapsible">
        <h3 data-bind="text: CameraName"></h3>
        <!-- ko foreach: $parent.Current -->
            <img data-bind="attr: { src: URL }" />
        <!-- /ko -->
    </div>
<!-- /ko -->
person Daniel A. White    schedule 02.06.2012
comment
Массив камер заполняется при готовности документа, но текущий массив повторно заполняется в разное время. Он может даже быть пустым, когда Knockout зацикливается на камерах. Нет ли способа сделать это с двумя разными массивами (как в моем вопросе выше)? - person judehall; 03.06.2012
comment
$parent был ключом :) Большое спасибо, мой друг! - person judehall; 03.06.2012
comment
@ViktorBlöndal не проблема. :) - person Daniel A. White; 03.06.2012