У меня есть частичный вид, который включен на несколько страниц. Это частичное представление имеет отношение к NgController. Есть ли способ получить доступ к переменной области видимости этого вложенного контроллера, когда я внутри другого?
Например:
<div ng-controller="fooController">
<a ng-click="changeScopeVariableOfBarController()">Click!</a>
<div ng-controller="barController">
{{ thisHasToChangePlease }}
</div>
</div>
Это возможно? Я не мог понять, как это сделать. Я включаю частичный вид с php include, поэтому я не работаю с шаблонами.
Если у вас есть многократно используемый компонент (шаблон + функциональность), вы можете реорганизовать это в директиву вместо шаблона + контроллер. Затем, используя изолированный объем с параметрами, вы могли бы изменить внешний мир внутри этой директивы.
http://plnkr.co/edit/6JYVucuizmPkyt2CLQtr?p=preview
index.html
<div ng-controller="fooController">
<div>variable: {{ variable }}</div>
<button ng-click="changeScopeVariableOfBarController()">Click to increment variable on both scopes!</button>
<bar this-has-to-change-please="variable"></bar>
</div>
bar.html
<div>
thisHasToChangePlease: {{ thisHasToChangePlease }}
</div>
app.js
app.controller('fooController', function($scope) {
$scope.variable = 1;
$scope.changeScopeVariableOfBarController = function () {
$scope.variable++;
};
});
app.controller('barController', function ($scope) {
});
app.directive('bar', function () {
return {
restrict: 'E',
scope: {
thisHasToChangePlease: '='
},
controller: 'barController',
templateUrl: 'bar.html'
}
});