Ember как получить доступ к дочернему контроллеру из родительского контроллера


У меня есть список людей, и я хотел бы показать, сколько записей редактируется с помощью Ember.js . Внутри PeopleController я пытаюсь подсчитать атрибут isEditing от PersonController со следующим кодом:

Schedule.PeopleController = Ember.ArrayController.extend({ 
    editCounter: function () {
        return this.filterProperty('isEditing', true).get('length');
    }.property('@each.isEditing')
});
Schedule.PersonController = Ember.ObjectController.extend({
        isEditing: false
});

К сожалению, я получаю 0 в результате функцииeditCounter . Этот атрибут (isEditing ) должен сказать мне, сколько людей редактируется. Функция editCounter вызывается внутри html архив, который я назвал индексом.html:

...
            {{outlet}}
            <div id="count_edits">
                <span id="total_edits">
                    <strong>Editing: </strong> {{editCounter}}
                </span>
            </div>
...

Итак, вот мой вопрос: как бы я правильно получил доступ к isEditinginside PeopleController?

1 4

1 ответ:

В вашем ArrayController убедитесь, что вы устанавливаете itemController:

Schedule.PeopleController = Ember.ArrayController.extend({ 
    itemController: 'Person',
    editCounter: function () {
        return this.filterProperty('isEditing', true).get('length');
    }.property('@each.isEditing')
});

См. http://jsbin.com/eyegoz/4/edit