У меня есть небольшой сценарий с обратным отсчетом, созданным через directive
, который начинается, если значение $scope
внутри controller
является true
. Это html
код:Pass значение Сферы из директивы к контроллеру - 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: '&'} в свою директиву, а затем вы можете настроить привязку в контроллере к этому методу, а затем вызвать этот метод из своей директивы. –