2015-06-03 52 views
0

我敢肯定我犯了一個錯誤,但我找不到它。 HTML:角度指令回調不起作用

<html ng-app="countdown"> 
    <body> 
    <div class="container" ng-controller="cc"> 
     {{status}}<br> 
     <countdown duration="3" timeoutCallback="cbck"></countdown> 
    </div> 
    </body> 
</html> 

這就是JavaScript代碼:

var app = angular.module("countdown",[]); 

app.controller('cc', function ($scope){ 
    $scope.status = 'countdown started '; 
    $scope.cbck = function() { 
    $scope.status = 'countdown finished'; 
    } 
}); 
app.directive('countdown', ['$interval', function ($interval) { 
    return { 
    scope: { 
     timer: '=duration', 
     callback: '&timeoutCallback' 
    }, 
    restrict: 'E', 
    template: '<span>{{minutes}}:{{seconds}}</span>', 
    link: function (scope, element, attrs){ 

     scope.ipromise = $interval(function() { 
     var minutes, seconds; 
     minutes = parseInt(scope.timer/60, 10) 
     seconds = parseInt(scope.timer % 60, 10); 
     scope.minutes = minutes < 10 ? "0" + minutes : minutes; 
     scope.seconds = seconds < 10 ? "0" + seconds : seconds; 
     if(scope.timer > 0){ 
      scope.timer--; 
     }else{ 
      scope.callback(); 
      $interval.cancel(scope.ipromise); 
     } 
     }, 1000); 
    } 
    }; 
}]); 

我無法找到我做錯了,我開發了回調的另一個指令和那些工作。

下面的代碼:http://codepen.io/madridserginho/pen/JdWNEK

回答

0
<html ng-app="countdown"> 
    <body> 
    <div class="container" ng-controller="cc"> 
     {{status}}<br> 
     <countdown duration="3" timeout-callback="cbck"></countdown> 
    </div> 
    </body> 
</html> 

駱駝情況下,從指令屬性(如timeoutCallback)被翻譯鑑於衝的情況下(如timeout-callback),這就是爲什麼綁定不起作用。

1

@Arek說什麼......

也使用:callback: '=timeoutCallback'

而不是callback: '&timeoutCallback'

http://codepen.io/anon/pen/PqpmgX

+0

良好的漁獲,我沒有注意到,'&',這給不需要的複雜性在調用函數綁定這種方式。 – rzelek