我有一個帶有倒計時的小腳本,通過directive
創建,如果controller
中的$scope
值爲true
,則該腳本開始。這是html
代碼:將範圍值從指令傳遞到控制器 - AngularJS
<countdown from="3" start-if="{{startCountdown}}"></countdown>
其次directive
的代碼:
app.directive('countdown', function ($interval) {
return {
restrict: 'E',
template: '{{count}}',
controller: function($scope, $element, $attrs) {
$scope.count = $attrs.from;
function countdown(){
var intervalID = $interval(function() {
if ($scope.count > 0) {
$scope.count--;
} else {
$interval.cancel(intervalID);
}
}, 1000);
}
$attrs.$observe('startIf', function(value) {
if (value) {
countdown();
}
});
}
}
});
倒計時工作正常,但controller
內,如果$scope.count === 0
,應該有一個alert()
但它不是加工。
這是一個Plnkr與完整的代碼。您知道如何將$scope.count
的值傳遞給controller
並解決此問題嗎?提前感謝您的回覆!
它看起來像你使用這個指令父範圍,即不隔離指令範圍,因爲你沒有範圍:{...}在你的指令上面的代碼。這意味着你應該能夠簡單地在控制器中放置一個$ scope。$ watch('count',...)來監視範圍變量的變化。如果你想使用獨立的範圍,那麼你可以在你的指令中放置一個方法綁定範圍:{countdown:'&'},然後你可以在控制器中爲該方法設置一個綁定,然後從你的指令中調用該方法。 –