下記の工場とコントローラをご覧ください。私は自分のコントローラーで工場を参照したいと思う。私はコントローラがAPIからの実行カウントにアクセスできるようにしたい。
現時点では、$ timeoutの実行後にコントローラを新しい値で更新できません。
理想的には、コントローラーではなく工場で$タイムアウトを維持したいと考えています。私は、問題は私がタイムアウトでコールバックを持っていないということだと思います、誰かが私を正しい方向に向けることができますか?
工場
angular.module('MyPoller', []).factory('MyPoller', function(
$http,$filter,$timeout) {
var data = { response: {}, calls: 0 };
var poller = function (successCallback) {
$http.get('https://jsonplaceholder.typicode.com/posts').then(function (r) {
data.response = r.data;
data.calls++;
successCallback(data);
$timeout(poller, 10000);
});
};
return {
poller: poller
};
});
コントローラ
angular.module('NavBarCtrl', [])
.controller('NavBarCtrl', function NavBarCtrl($scope, $document, $window, $dropdown, $modal, $timeout, MyPoller) {
var ctrl = this;
MyPoller.poller(function(data) {
ctrl.numberNewMessages = data.calls;
});
})
あなたは、 "コントローラを更新できない" という結論に至りましたか? 'numberNewMessages'をテンプレートに表示しようとしていますか?もしそうなら、 '$ scope.numberNewMessages'を使います。 – tcooc
メッセージを再入力する必要があります。私は編集して更新します。 $ timeoutが実行された後、コントローラを新しい値で更新できません。 – defaultcheckbox