Я столкнулся с подобной проблемой на днях.Я бы использовал привязку данных вместе с методом $ ctrl.Вот действительно хорошая статья с примером, который вы можете воспроизвести в своем случае: http://dfsq.info/site/read/angular-components-communication Надеюсь, это поможет.Эта форма общения значительно упрощает обмен данными между двумя компонентами на одной странице.Пример статьи:
Компонент заголовка: ввод и вывод
.component('headerComponent', {
template: `
<h3>Header component</h3>
<a ng-class="{'btn-primary': $ctrl.view === 'list'}" ng-click="$ctrl.setView('list')">List</a>
<a ng-class="{'btn-primary': $ctrl.view === 'table'}" ng-click="$ctrl.setView('table')">Table</a>
`,
controller: function( ) {
this.setView = function(view) {
this.view = view
this.onViewChange({$event: {view: view}})
}
},
bindings: {
view: '<',
onViewChange: '&'
}
})
Таким образом, это означает, что компонент заголовка можно использовать примерно так:
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
Основной компонент: ввод
.component('mainComponent', {
template: `
<h4>Main component</h4>
Main view: {{ $ctrl.view }}
`,
bindings: {
view: '<'
}
})
Родительский компонент
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
<main-component view="root.view"></main-component>
Я использовал описанный выше метод для передачи данных между двумя контроллерами, чтобы скрыть один компонент, когда кнопка нажата в другом компоненте.Передаваемые данные были логическими.Я ожидаю, что вы сможете сделать то же самое с array.length.