この関数は AngularJS コントローラー内に存在します。次のようになります。
polling_interval=1000;
var poll = function()
{
//Execution code
$timeout(poll, polling_interval);
};
poll();
AngularJS のサービスを使用して、$timeout
自分自身を呼び出し続けます。このポーリング関数にパラメーターを追加するまでは、これが機能します。追加されたパラメーターのコードは次のようになります。
polling_interval=1000;
var poll = function(param1, param2)
{
//Execution code
$timeout(poll(param1, param2), polling_interval);
};
poll(param1, param2);
構文が受け入れられず、困惑しています。AngularJS を使用してパラメータ付きの関数を実行するにはどうすればよいでしょうか$timeout
? これができない場合、この問題を回避する方法はありますか? 投票関数でパラメータを受け入れるようにしたいと思います。
ベストアンサー1
$timeout は、Angular の window.setTimeout のラッパーです。当然、setTimeout と同様に、タイムアウト fn に追加のパラメータを渡すこともサポートしています。
AngularJS API から:
$timeout([fn], [delay], [invokeApply], [Pass]);
[注釈](機能)あなたの機能である
[遅れ](数値) 遅延(ミリ秒)
[適用を呼び出す](ブール値) デフォルトは 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);
これは、タイムアウトした 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);