Я использую UI-Router для Angular, и у меня есть отдельные виды для моего приложения: боковая панель и главная. Теперь мне нужно изменить какой-либо класс в главном представлении после некоторых действий, которые выполняются в виде боковой панели.Сообщайте два вида с одним контроллером в AngularJS
Итак, это мой код:
конфигурации
.state('app.area', {
url: '/area/:areaId',
views: {
'@': {
template: require('./app/generic/genericWithSidebar.html'),
controller: 'AreaCtrl'
},
'[email protected]': {
template: require('./app/area/_area.html'),
controller: 'AreaCtrl',
controllerAs: 'CTRL',
},
'[email protected]': {
template: require('./app/area/_sidebar.html'),
controller: 'AreaCtrl',
controllerAs: 'CTRL',
}
},
контроллер
class AreaCtrl {
constructor($scope) {
"ngInject";
this.$scope = $scope;
this.$scope.descriptionIsActive = false;
}
showAreaDescription() {
this.$scope.descriptionIsActive = !this.$scope.descriptionIsActive;
}
}
export default AreaCtrl;
и просмотров за боковой и основной
// sidebar view
<span ng-click="CTRL.showAreaDescription()">show more</span>
// main view
<div ng-class="{'active': CTRL.descriptionIsActive}"></div>
Мне нужно общаться между представлениями, а не контроллерами, у меня есть один контроллер.
Необходимо знать, что каждый вид инициализирует новый экземпляр 'AreaCtrl', каждый со своей собственной областью – charlietfl
@charlietfl Итак, что мне делать? Должен ли я удалить определение контроллера для просмотра и оставить только для родителя? – Lukas
возможно ..... да. На самом деле недостаточно известно об этом приложении, но – charlietfl