2016-11-06 89 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链接更新了我的答案:) –