Угловая переменная доступа / изменения ng-контроллера?

0

У меня есть частичный вид, который включен на несколько страниц. Это частичное представление имеет отношение к NgController. Есть ли способ получить доступ к переменной области видимости этого вложенного контроллера, когда я внутри другого?

Например:

<div ng-controller="fooController">

    <a ng-click="changeScopeVariableOfBarController()">Click!</a>

    <div ng-controller="barController">
        {{ thisHasToChangePlease }}
    </div>
</div>

Это возможно? Я не мог понять, как это сделать. Я включаю частичный вид с php include, поэтому я не работаю с шаблонами.

Теги:

1 ответ

0

Если у вас есть многократно используемый компонент (шаблон + функциональность), вы можете реорганизовать это в директиву вместо шаблона + контроллер. Затем, используя изолированный объем с параметрами, вы могли бы изменить внешний мир внутри этой директивы.

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'
  }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню