gpt4 book ai didi

angularjs - 仅在 AngularJS 加载时第一次运行函数

转载 作者:行者123 更新时间:2023-12-03 06:53:09 27 4
gpt4 key购买 nike

我正在使用 Angular-seed 模板(AngularJS)并且我有 routeProvider 设置等,现在我想执行一个函数(驻留在工厂中),但只是第一次当页面加载时。我找到了很多解决方案,但我不想每次用户在选项卡之间切换时都执行代码(当然,通过 routeProvider ,页面不会重新加载) - 必须执行代码仅当整个页面被(重新)加载时。

我应该如何处理这个问题?我尝试从 run 调用该函数,然后在页面加载时广播该事件,但没有事件监听器 - 我猜这是因为 run 部分在之前执行 Controller 已设置,因此在事件广播时没有附加监听器。

那么,有什么建议如何解决这个问题吗?

更新

用例:

  • 当用户在页面中输入网址时,页面就会加载
  • 加载页面时,会执行 $http.get 请求,该请求会获取随机内容
  • 只能通过单击按钮来更改此内容,以明确请求更改内容。
  • 如果用户点击不同的页面,例如view2(routeProvider)然后回到view1,内容一定不能改变
  • 当用户刷新页面 (F5) 时,内容会再次更改(或者如前所述,通过单击按钮)

最佳答案

使用run方法:

app.run(function(yourService){
yourService.cacheRandomContent();
});

它仅在应用程序引导并创建服务后运行一次。

要访问 Controller 中的数据,只需注入(inject)相同的服务:

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;
}
}
});

关于angularjs - 仅在 AngularJS 加载时第一次运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37483000/

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