У меня есть кнопка в div с контроллером с именем controllerBubble
. Я бы хотел, чтобы эта кнопка отображала div, управляемый другим контроллером: controllerDependance
. Можно ли обернуть кнопку в div и скрытый div одним и тем же контроллером, но это не работает. Это мой HTML:
<div ng-app="app">
<div ng-controller="mainController" ng-show="myvalue" class="ng-cloak">
<div id="panelSap" ng-controller="controllerDependance">
My hidden div
</div>
</div>
<div id="containerDetailsTicket" class="clearfix" ng-controller="controllerBubble">
Div which contains the button
<div id="containerButton" ng-controller="mainController">
<button ng-click="showAlert()">Afficher</button>
</div>
</div>
</div>
Это мои контроллеры:
var d3DemoApp = angular.module('app', [])
d3DemoApp.controller('controllerBubble', function() {
});
d3DemoApp.controller('controllerDependance', function($scope) {
$scope.myvalue = false;
$scope.showAlert = function() {
$scope.myvalue = true;
};
});
d3DemoApp.controller('mainController', function AppCtrl($rootScope, $scope) {
$scope.myvalue = false;
$scope.showAlert = function() {
$scope.myvalue = true;
};
});
Я создал Plunker. Любая идея, что происходит? Кто-то может работать над Plunker. Я надеюсь, что кто-то может мне помочь. Большое спасибо.
Послушайте, не знаете, почему вы хотите иметь такое гнездование контроллеров, но я в значительной степени уверен, что это не хорошо. Я скажу вам, почему. В вашем коде вы пытаетесь использовать один и тот же контроллер на двух элементах DOM. Таким образом, у них есть 2 разных области $scope
и поэтому они не работают.
Я сделал рабочий плункер для вас, используя $rootScope
но это не чистый подход, так как вы будете $rootScope.myvalue
глобальную переменную ($rootScope.myvalue
). Объявлять глобальную переменную всегда следует избегать, если она не принудительно.
Другой предлагаемый подход в plunker заключается в использовании $emit
emit как уведомления о событиях. $on
будет принимать соответствующие меры при срабатывании события. Вы даже можете передавать значения, которые тоже для разных контроллеров.
Сервис также может использоваться для передачи значений между controller
.
Дайте мне знать, если вам нужна дополнительная информация
Обновление 1:
Если вы хотите удалить некоторый div
(не скрывать), вы должны попытаться использовать ng-if
.