AngularJs $interval on service
AngularJs $interval on service
我是Angularjs
的初学者,所以我想问你是否有更好的方法来解决我的问题。
例如,我需要每 30 秒更新一次带有 ajax 调用的<div>
的内容。
.HTML
<div>
<div>{{test.value}}</div>
</div>
我的想法是在service
上使用$interval
,如下所示:
.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
的服务是一个不错的选择吗?例如,从config
中调用它不是更好吗?
我查看了很多示例,但我真的不明白这样做的最佳方法是什么。
非常感谢。
问候
您可以
考虑将$interval
功能放在控制器中,以便您的服务可以更通用/可重用。
此外,$http
会自行返回一个承诺,因此您不一定需要手动执行此操作:
// 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);
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 测试Angular Service解决错误回调中的promise
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- window.on.scroll事件未启动
- Socket.io on Mozilla Rhino
- CSS中的游标属性似乎不适用于USB On The Go
- jQuery点击ON现在使用.load触发关闭
- JQuery.on(“keydown”)追加到页面时不工作
- 使用.on动态添加jquery/js不知道的html元素
- angularjs$valid-on-dates在firefox中报告错误
- addEventListener on NodeList
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- jQuery 1.7.2:.on()在一个页面上工作;Don’别再干别的了
- Jquery on单击“显示信息”
- 平均值.on(事件[,选择器][,数据],处理程序)
- 多个jQuery.on()事件无法运行xBrowser(取决于顺序)
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- AngularJs $interval on service