我很難搞清楚如何更新單擊事件中的值。我有一個自定義指令,基本上是一個按鈕開關。當按鈕關閉時,我希望它將某個變量的值更改爲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;
}