я следующий код ...
$timeout(function(test){
console.log(test.num);
},0, true, {num:9});
Однако, тест всегда нуль, так как я должен пройти в переменных?
я следующий код ...
$timeout(function(test){
console.log(test.num);
},0, true, {num:9});
Однако, тест всегда нуль, так как я должен пройти в переменных?
Ваш код верный. Однако вы используете более старую версию AngularJS, которая не поддерживает 4-й параметр. Вам нужна хотя бы версия 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}));
OMG вы правы, я полностью думал, что я бегу 1,4 – Jackie
Я до сих пор проигрышные переменные по некоторым причинам, я думаю, потому что это в для цикла, и я пытаюсь перейти к индексу. Вот почему мне это нужно. – Jackie
Вы правы, в этом случае вам нужно сохранить значение счетчика. Вы также можете использовать дополнительную переменную внутри тела цикла, если вам не нравятся сразу вызываемые функции. – lex82
Вы можете сделать это самостоятельно.
(function(test){
$timeout(function(){
console.log(test.num);
},0, true, {num:9});
})({num: 11});
в любом случае ваш $timeout
будет что test
доступна, если ее определить снаружи.
Он работает мной .. –