-1
次のコードがあります。数分おきにサーバーをポーリングするファクトリをチェックします。それは正常に動作しますが、モーダルが開いたときに "fetchDataContinously"メソッドを一時停止し、モーダルが閉じられたときに再開します。要するに、私はモーダルの開閉に "fetchDataContinously"を切り替える方法を見つける必要があります。私の質問がはっきりしない場合は、アドバイスをしてください。
angular.module('NavBar', []).controller('NavBarCtrl', function NavBarCtrl($scope,$modal,$timeout,MyPollingService) {
var ctrl = this;
fetchDataContinously();
function fetchDataContinously() {
MyPollingService.poll().then(function(data) {
if(data.response[0].messages[0].important_popup){
ctrl.showImportantNotice(data.response[0].messages[0]);
return;
}
$timeout(fetchDataContinously, 3000);
});
}
ctrl.showNotices = function() {
var noticesModalOptions = {
templateUrl: "notices.html",
controller: "NoticesCtrl",
controllerAs: "ctrl",
show: true,
scope: $scope,
resolve: {
notices: function(NoticesFactory) {
return NoticesFactory.getMessages();
}
}
}
var myNoticesModal = $modal(noticesModalOptions);
myNoticesModal.$promise.then(myNoticesModal.show);
}
ctrl.showImportantNotice = function (importantNotice) {
ctrl.importantNotice = importantNotice;
var importantNoticeModalOptions = {
templateUrl: "/importantNotice.html",
controller: "ImportantNoticeCtrl",
controllerAs: "ctrl",
show: true,
scope: $scope,
onHide: function() {
console.log("Close !");
fetchDataContinously();
},
onShow: function() {
console.log("Open !");
}
}
var myImportantNoticeModal = $modal(importantNoticeModalOptions);
myImportantNoticeModal.$promise.then(myImportantNoticeModal.show);
}
})
右のように、モーダルが開いたら、タイムアウトをキャンセルしてから閉じます。 –
私はそれが私が失われていると思う。 fetchDataContinously関数の外側から$タイムアウトを取り消すにはどうすればいいですか?たとえば、importantAttributeModalOptions.onHide内でどのようにすればいいですか? – defaultcheckbox
コードで$タイムアウトが呼び出されていないことがあります。 – charlietfl