如何将变量传递给$ timeout

时间:2016-01-27 20:53:26

标签: angularjs

我有以下代码......

$timeout(function(test){
  console.log(test.num);
},0, true, {num:9});

但是,测试始终为null所以我应该如何传递变量?

2 个答案:

答案 0 :(得分:3)

您的代码是正确的。但是,您运行的是不支持第4个参数的旧版AngularJS。您至少需要1.4.0版本。

通常,您不必显式传递参数,因为它们是在封闭范围内定义的,并且在闭包中可见。这也有效:

var param = {num:9};
$timeout(function(){
  console.log(param.num);
});

如果您需要显式传递参数 - 通常是因为您必须保留某些变化变量的值 - @ Pankaj-Parkar的答案提供了一个很好的解决方法。但是,我更喜欢这样:

$timeout((function(test) {
    return function() { console.log(test.num) }
})({num: 9}));

答案 1 :(得分:2)

你可以让它自我调用功能。

(function(test){
  $timeout(function(){
     console.log(test.num);
  },0, true, {num:9});
})({num: 11});

无论如何,如果$timeout在外面定义,testimport itertools alist = ['dog', 'cat', 'fish'] for result in itertools.combinations(alist, 2): print result 可用。