Tôi có dịch vụ sau trong ứng dụng của mình:
uaInProgressApp.factory('uaProgressService',
function(uaApiInterface, $timeout, $rootScope){
var factory = {};
factory.taskResource = uaApiInterface.taskResource()
factory.taskList = [];
factory.cron = undefined;
factory.updateTaskList = function() {
factory.taskResource.query(function(data){
factory.taskList = data;
$rootScope.$digest
console.log(factory.taskList);
});
factory.cron = $timeout(factory.updateTaskList, 5000);
}
factory.startCron = function () {
factory.cron = $timeout(factory.updateTaskList, 5000);
}
factory.stopCron = function (){
$timeout.cancel(factory.cron);
}
return factory;
});
Sau đó, tôi sử dụng nó trong một bộ điều khiển như thế này:
uaInProgressApp.controller('ua.InProgressController',
function ($scope, $rootScope, $routeParams, uaContext, uaProgressService) {
uaContext.getSession().then(function(){
uaContext.appName.set('Testing house');
uaContext.subAppName.set('In progress');
uaProgressService.startCron();
$scope.taskList = uaProgressService.taskList;
});
}
);
Vì vậy, về cơ bản dịch vụ của tôi cập nhật factory.taskList
5 giây một lần và tôi đã liên kết điều này factory.taskList
với $scope.taskList
. Sau đó, tôi đã thử các phương pháp khác nhau như $apply
, $digest
nhưng các thay đổi trên factory.taskList
không được phản ánh trong bộ điều khiển và chế độ xem của tôi $scope.taskList
.
Nó vẫn trống trong mẫu của tôi. Bạn có biết tôi có thể tuyên truyền những thay đổi này như thế nào không?