AngularJSを学習しようとしています。新しいデータを得るために、私の最初の試みは、すべてのは、第二働い:AngularJSを使用したサーバーポーリング
'use strict';
function dataCtrl($scope, $http, $timeout) {
$scope.data = [];
(function tick() {
$http.get('api/changingData').success(function (data) {
$scope.data = data;
$timeout(tick, 1000);
});
})();
};
を、私はそれがUIを更新し、別のタイムアウトを設定する前に応答を待つ5秒間スレッドを眠っていることにより、低速なサーバーをシミュレートする場合。
'use strict';
angular.module('datacat', ['dataServices']);
angular.module('dataServices', ['ngResource']).
factory('Data', function ($resource) {
return $resource('api/changingData', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
});
function dataCtrl($scope, $timeout, Data) {
$scope.data = [];
(function tick() {
$scope.data = Data.query();
$timeout(tick, 1000);
})();
};
のみ機能サーバーの応答が速い場合:私は、モジュールを作成するための角度モジュールやDIを使用するには、上記を書き換えたときに問題があります。遅延があると、応答を待つことなく1秒間に1リクエストをスパムし、UIをクリアするようです。私はコールバック関数を使用する必要があると思う。私が試した:
var x = Data.get({}, function() { });
が、エラーが発生しました:これは$resourceのためのドキュメントに基づいていたが、私は本当にそこに例を理解していなかった:「エラーdestination.pushは関数ではありません」。
2番目のアプローチはどのように動作させるのですか?
優れた、ありがとう。私はあなたがそこにコールバックを置くことができるのか分からなかった。それがスパム問題を解決しました。私はまた、UIクリアリング問題を解決したコールバックの内部にデータ割り当てを移動しました。 – David
助けてくれるのはうれしい!これで問題が解決した場合は、この回答を受け入れることができます。 – abhaga
上記のコードはpageAとcontrollerAのコードであると仮定します。私はpageBとcontrollerBに移動するときにこのタイマーを止めるにはどうすればいいですか? –