我使用了角度种子模板(角度1),我有routeProvider
设置等等,现在我想执行一个函数(它驻留在工厂中),但只是第一次页面加载时我找到了很多解决方案,但是每次用户在标签之间切换时我都不想执行代码(当然,通过routeProvider
,页面没有重新加载) - 代码必须是仅在整个页面被重新加载时执行。
我该如何处理?我尝试从run
调用函数,然后在页面加载时广播事件,但是没有事件监听器 - 我想这是因为run
部分在设置控制器之前执行,所以当事件被广播时,没有附加的听众。
那么,有什么建议可以解决这个问题吗?
更新
用例:
$http.get
请求,该请求会获得随机内容routeProvider
)然后返回view1,内容不得更改答案 0 :(得分:3)
使用run
方法:
app.run(function(yourService){
yourService.cacheRandomContent();
});
在应用程序启动并创建服务后,它只运行一次。
要访问控制器中的数据,只需注入相同的服务:
app.controller('someCtrl',function($scope, yourService){
yourService.getCachedRandomContent().then(function(resp){
$scope.data = resp.data;
});
});
您的服务将是:
app.service('yourService',function($http){
var promise;
return {
cacheRandomContent: function(){
promise = $http.get();
},
getCachedRandomContent : function(){
return promise;
}
}
});