我正在使用用於Angular的UI-Router,並且爲我的應用程序分隔了視圖:sidebar和main。現在,我需要在側欄視圖中執行一些操作後在主視圖中更改某個類。用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