gpt4 book ai didi

javascript - AngularJs $服务间隔

转载 作者:行者123 更新时间:2023-11-27 23:21:14 25 4
gpt4 key购买 nike

我是 Angularjs 的初学者所以想请教您是否有更好的方法来解决我的问题。

例如,我需要每 30 秒更新一次 <div> 的内容通过 ajax 调用。

HTML

<div>
<div>{{test.value}}</div>
</div>

我的想法是使用$intervalservice上如下:

.service('eedisplayService', function($q, $http, $interval){
this.getData = function(url, variable){
$interval(function (){
var deferred = $q.defer();
$http.get(url)
.success(function(data){
if (data){
variable.value = data
} else {
deferred.reject('Wrong response');
}
})
.error(function(){
deferred.reject();
});
return deferred.promise
},30000);
}

});

并调用服务电话controller像这样:

.controller('displayCtrl', function($scope, config, eedisplayService){

var url = "myUrl";

$scope.test = {value : "" };

eedisplayService.getData(url, $scope.test);

});

这是完全 AngularJs 方法吗?该代码可以工作,但使用 $interval 调用服务是一个不错的选择来自 Controller ?不是更好地从 config 调用它吗?例如?

我检查了很多例子,但我真的不明白什么是最好的方法。

非常感谢。

问候

最佳答案

您可以考虑将 $interval 功能放入 Controller 中,以便您的服务更加通用/可重用。

此外,$http 会自行返回一个 promise ,因此您不一定需要手动执行此操作:

// your service 
.service('eedisplayService', function($http){
this.getData = function(url) {
return $http.get(url);
}
});


// controller
...
$interval(function() {
eedisplayService.getData(...)
.then(function(response) {
// update the content in the view
})
}, 30000);

关于javascript - AngularJs $服务间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347827/

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