AngularJS - доступ к ng-click в пользовательской директиве

Я пытаюсь разобраться в директивах, я могу легко использовать функцию шаблона, чтобы выкинуть мой HTML, однако, если у меня есть ng-click внутри моего шаблона, как я могу получить доступ к нему в функции ссылок?

Моя директива:

app.directive('directiveScroll', function () {
return {
      restrict: 'AE',
      replace: 'true',
      template:   '<div class="scroll-btns">' +
            '<div class="arrow-left" ng-click="scrollLeft(sectionID)"></div>' +
            '<div class="arrow-right" ng-click="scrollRight(sectionID)"></div>' +
        '</div>',
      link: function(scope, elem, attrs) {
        $scope.scrollRight  = function () {
          console.log("scrollRight  clicked");
        };
        $scope.scrollLeft  = function () {
          console.log("scrollLeft  clicked");
        };
      }
  };
});

Как вы можете видеть, я добавил $scope.scrollRight в мою функцию link, однако при щелчке на консоли ничего не отображается.

Если я место:

$scope.scrollRight  = function () {
     console.log("scrollRight  clicked");
};

$scope.scrollLeft  = function () {
     console.log("scrollLeft  clicked");
};

В моем контроллере (и из моей директивы) он работает так, как ожидалось.

Любая помощь была оценена.

Ответы

Ответ 1

Ваша функция ссылок определяется следующим образом:

link: function(scope, elem, attrs) {..}

однако вы пишете функции в переменной $scope:

    $scope.scrollRight  = function () {
      console.log("scrollRight  clicked");
    };
    $scope.scrollLeft  = function () {
      console.log("scrollLeft  clicked");
    };

В этом случае $scope фактически не вводится в функцию ссылок (и не может быть введена), поэтому ссылка - просто простая функция с параметрами. Вы должны изменить $scope на scope, и он должен работать:

    scope.scrollRight  = function () {
      console.log("scrollRight  clicked");
    };
    scope.scrollLeft  = function () {
      console.log("scrollLeft  clicked");
    };

Ответ 2

Вы уверены, что параметр функции связи имеет имя scope, а не $scope?