Мне сложно понять, как обновить значение из события click. У меня есть настраиваемая директива, которая в основном представляет собой кнопочный переключатель. Когда кнопка выключена, я хочу, чтобы она изменила значение определенной переменной на 0. Когда она включена, я хочу, чтобы она изменила значение этой переменной на число> 0.Передача переменных из директивы в контроллер
Я создал plnkr, чтобы воссоздать проблему.
Кроме того, я прочитал this post, что было несколько полезно, но все же мне почесала голову о том, как подойти моя проблема.
В директиве я обрабатываю событие click, а затем пытаюсь изменить значение переменной, но это никогда не изменяется в представлении. Я думаю, что мне нужно передать значение из директивы контроллеру, чтобы распространить его на представление, но я не уверен, как это сделать.
angular
.module('app')
.directive('buttonToggle', buttonToggle);
function buttonToggle() {
function link(scope, elm) {
if(elm === "#btnToggle1") {
angular.element(elm).on('click', function() {
var confirmResponse = (window.confirm("Are you sure?") === true);
if(confirmResponse) {
scope.on = !scope.on;
scope.off = !scope.off;
scope.$digest();
if(scope.on) {
$scope.switchBtnOutput = 8044; // var I'm trying to change
return scope.off;
} else if(scope.off) {
$scope.switchBtnOutput = 0; // var I'm trying to change
return scope.on;
}
}
scope.$digest();
});
} else {
angular.element(elm).on('click', function() {
var confirmResponse = (window.confirm("Are you sure?") === true);
if(confirmResponse) {
scope.on = !scope.on;
scope.off = !scope.off;
scope.$digest();
if(scope.on) {
return scope.off;
} else if(scope.off) {
return scope.on;
}
}
scope.$digest();
});
}
}
var directive = {
restrict: 'AE',
link: link,
replace: true,
templateUrl: 'buttonToggle.html',
scope: {
on: "=",
off: "="
}
};
return directive;
}