我有以下代码......
$timeout(function(test){
console.log(test.num);
},0, true, {num:9});
但是,测试始终为null所以我应该如何传递变量?
答案 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
在外面定义,test
将import itertools
alist = ['dog', 'cat', 'fish']
for result in itertools.combinations(alist, 2):
print result
可用。