Я думаю, вам нужно использовать опцию изоляции «=» в вашей директиве для достижения этого. По моему мнению, это позволяет привязать ваше свойство контроллера к вашей директиве и наоборот.
Вы должны изменить свой обратный отсчет Аттрибут использовать объект контроллера:
<timer interval="1000" countdown="countdown">{{minutes}}:{{seconds}}</timer>
Ваш контроллер будет выглядеть примерно так:
app.controller("TimerCtrl", function($scope) {
$scope.timerRunning = true;
$scope.countdown = 10;
});
И ваша директива будет что-то вдоль линий :
app.directive("timer", function() {
return {
restrict: "E",
transclude: true,
scope: {
countdown: "="
},
template: '<div ng-transclude></div>',
link: function (scope, element) {
scope.incrementCountdown = function (amount) {
scope.countdown += parseint(amount, 10);
}
// something that would trigger the increment, could be whatever
element.bind('click', function() {
scope.incrementCountdown(10); // could also pull the param value from an attribute on your directive
});
}
}
});
Этот способ, если вы измените обратный отсчет в пределах sc ope вашей директивы, он также должен обновить модель в вашем контроллере.
Я не запустил этот код, чтобы он не был безошибочным, и я являюсь Angular n00b, поэтому, надеюсь, я не буду вести вас в заблуждение, но я уверен, что кто-то еще зазвонит, если это не так , Удачи.