use*_*486 22 javascript angularjs
我在AngularJS控制器中有这个功能.看起来像这样;
polling_interval=1000;
var poll = function()
{
//Execution code
$timeout(poll, polling_interval);
};
poll();
Run Code Online (Sandbox Code Playgroud)
它使用$timeoutAngularJS中的服务来保持自己的调用.这有效,直到我想为此poll函数添加参数.对于添加的参数,我的代码看起来像这样;
polling_interval=1000;
var poll = function(param1, param2)
{
//Execution code
$timeout(poll(param1, param2), polling_interval);
};
poll(param1, param2);
Run Code Online (Sandbox Code Playgroud)
语法是不可接受的,我现在不知所措.如何$timeout在AngularJS中使用参数执行函数?如果无法做到这一点,是否有解决此问题的方法?我想让我的poll函数接受参数.
ale*_*tti 47
$ timeout是Angular的window.setTimeout包装器.当然,就像setTimeout一样,它支持将附加参数传递给timed-out fn.
来自AngularJS API:
$timeout([fn], [delay], [invokeApply], [Pass]);
Run Code Online (Sandbox Code Playgroud)
[fn](函数)是你的函数
[延迟](数字)以ms为单位的延迟
[invokeApply](布尔值)默认为true,如果为true,则fn在$ apply内运行,如果为false,则跳过模型脏检查.
[传递]附加参数!这就是你想要的!
您的代码应该如何:
polling_interval = 1000;
var poll = function(param1, param2){
//Execution code
$timeout(poll, polling_interval, true, param1, param2);
};
poll(param1, param2);
Run Code Online (Sandbox Code Playgroud)
这是将参数传递给超时fn的正确方法.希望这个对你有帮助.
编辑:此功能是在2015年1月22日(v1.4.1)添加的,在该版本之前,正确的方法是:
polling_interval = 1000;
var poll = function(param1, param2){
//Execution code
$timeout(poll.bind(null, param1, param2), polling_interval);
};
poll(param1, param2);
Run Code Online (Sandbox Code Playgroud)
xia*_*boa 32
因为$timeoutis函数的第一个参数类型,你需要这样做:
polling_interval=1000;
var poll = function(param1, param2)
{
//Execution code
$timeout(function() {poll(param1, param2)}, polling_interval);
};
poll(param1, param2);
Run Code Online (Sandbox Code Playgroud)
小智 9
使用匿名函数可能是最简单的方法.
polling_interval=1000;
var poll = function(param1, param2)
{
//Execution code
$timeout(function () { poll(param1, param2) }, polling_interval);
};
poll(param1, param2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28460 次 |
| 最近记录: |