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
?