gpt4 book ai didi

javascript - Angularjs 邮件应用程序的长轮询

转载 作者:行者123 更新时间:2023-11-27 22:41:50 24 4
gpt4 key购买 nike

我将使用 Angular JS 创建一个邮箱,这样我就有一个服务和一个管理邮件的 Controller 。

服务

app.service('mails',['$http','$interval','$rootScope',function($http,$interval,$rootScope){
var updatedData;
$interval(function(){
return $http.post('inc/get_mails.php?user='+'<?php echo $_SESSION['user']; ?>')
.success(function(response){
updatedData = response;
alert(updatedData);
$rootScope.$broadcast('got new mail!', { data: updatedData });
})
.error(function(err){console.log(err);});
},1000);
}]);

Controller

$scope.$on('got new mail!', function(event, args) {
$scope.mails = args.data;
});

但我有一个问题,该服务甚至没有运行一次。我应该怎么办!? :(tnx

最佳答案

您的服务中的代码不会被调用,您必须注入(inject)您的服务才能运行它。但我认为在服务中创建一个方法来初始化代码是更好的做法,它更明确。

app.factory('mails',['$http','$interval','$rootScope',function($http,$interval,$rootScope){

var updatedData = [];

return {
init: init
}

function init() {
$interval(function(){
return $http.post('inc/get_mails.php?user='+'<?php echo $_SESSION['user']; ?>')
.success(function(response){
// check if their is a difference between this call and the last call
if (updatedData.length !== response.length) {
updatedData = response;
alert(updatedData);
$rootScope.$broadcast('got new mail!', { data: updatedData });
}
})
.error(function(err){console.log(err);});
},1000);
}

}]);

然后如果你想运行代码:

app.controller('yourCtrl', ['mails', '$scope', function(mails, $scope) {
mails.init();

// each time you have a new mail
$scope.$on('got new mail!', function(event, args) {
$scope.mails = args.data;
});
}]);

关于javascript - Angularjs 邮件应用程序的长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38695613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com