2016-11-06 80 views
0

這裏我使用$ timeout在javascript forloop中添加一個延遲。意外的是我有一個錯誤說
ReferenceError $超時未定義。我是新的angularjs請幫助我。 PLNKR


function CompLibrary() { 
    return { 
    init: init 
    } 
    function init(dependencies, controller) { 
    dependencies.push(controller); 
    angularApp.controller('MainCtrl', dependencies); 
    } 
} 
var compX = CompLibrary(); 
compX.init(deps, _controller); 
function _controller() { 
    var ViewModel = this; 
    ViewModel.search = "Name"; 
    ViewModel.quantity = 1; 

    for(var i = 0; i < 4; i++) { 
    (function(i){ 
     $timeout(function() { 
      ViewModel.quantity++; 
     }, i * 2000); 
    })(i); // Pass in i here 
    } 

} 

回答

-1
var deps = []; 
var angularApp = angular.module('plunker',[]); 
function CompLibrary() { 
    return { 
    init: init 
    } 
    function init(dependencies, controller) { 
    dependencies.push('$timeout'); 
    dependencies.push(controller); 
    angularApp.controller('MainCtrl', dependencies); 
    } 
} 
var compX = CompLibrary(); 
compX.init(deps, _controller); 
function _controller($timeout) { 
    var ViewModel = this; 
    ViewModel.search = "Name"; 
    ViewModel.quantity = 1; 

    for(var i = 0; i < 4; i++) { 
    (function(i){ 
     $timeout(function() { 
      ViewModel.quantity++; 
     }, i * 2000); 
    })(i); // Pass in i here 
    } 

} 

通過在控制器功能注入$timeout就可以解決這個問題。

7

你必須inject$timeout到控制器的功能。

function _controller($timeout) { ... } 

請參閱更新Plunkr

+0

我試過這個,但沒有工作 – htoniv

+1

我用Plunkr鏈接更新了我的答案:) –