Директива AngularJS с изолированной областью действия, ng-repeat и controllerAs - PullRequest
0 голосов
/ 08 ноября 2018

function directive() {
  return {
    restrict: 'E',
    template: '<button ng-repeat="x in j.array" ng-click="j.set(x)">{{x}}</button>',
    replace: true,
    //scope: {},
    bindToController: {
      array: '=',
      answer: '='
    },
    controller: function() {
      var j = this;
      j.set = function(data) {
        j.answer = data;
      };
    },
    controllerAs: 'j'
  };
}

Когда я раскомментирую область и создаю изолированную область, директива больше не работает. Я пытаюсь определить, почему.
Обычно у меня все еще есть доступ к контроллеру в ng-repeat, в этом примере, когда я теряю его, он все еще доступен в $parent.j. Я думаю, что есть 3 решения.

Решение 1 состоит в том, чтобы оставить его не изолированным.
Решение 2 заключается в преобразовании каждой ссылки на j внутри повторения в $parent.j.
Решение 3 заключается в том, что есть какой-то способ использования j без необходимости использования $parent, о котором я не знаю.

1 Ответ

0 голосов
/ 08 ноября 2018

Это может быть связано с replace: true. Если вы оберните button в div, это похоже на работу! Я сделал небольшой Plunker здесь для демонстрации.

...