Я бы ожидал, что на такие вопросы ответят миллион раз, но не могу найти ничего, что сработало бы для моей конкретной проблемы. Мой компонент выглядит так:
const todoApp = () => ({
template: `
<div>
<todo-list todos="todoApp._filteredTodos"></todo-list>
</div>
`,
controller: class {
constructor(todoService) {
[...]
}
updateState() {
this._activeTodos = _.filter(this._todos, t => !t.completed);
switch (this.selectedFilter) {
case 'active':
this._filteredTodos = _.filter(this._todos, t => !t.completed);
break;
case 'completed':
this._filteredTodos = _.filter(this._todos, t => t.completed);
break;
default:
this._filteredTodos = this._todos;
}
},
updateTodos() {
this._todos = this.todoService.fetch();
this.updateState();
}
[...]
},
restrict: 'E',
bindToController: true,
controllerAs: 'todoApp',
link: function(scope, elem, attr, ctrl) {
document.addEventListener('store-update', ctrl.updateTodos.bind(ctrl), false);
}
});
export default todoApp;
Мне нужно обновить todoApp._todos
, чтобы <todo-list>
обновлялся с новым набором предметов. Этого не происходит, атм.
Компонент <todo-list>
довольно прост:
const todoList = () => ({
scope: {
todos: '=',
},
template: `
<ul class="todo-list">
<li ng-repeat="todo in todoList.todos track by todo.id">
[...]
</li>
</ul>
`,
controller: class {
[...]
},
restrict: 'E',
bindToController: true,
controllerAs: 'todoList'
});
export default todoList;
Что мне здесь не хватает?