首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在启动angular应用程序时执行代码

在启动angular应用程序时执行代码
EN

Stack Overflow用户
提问于 2013-10-09 23:20:20
回答 3查看 61.1K关注 0票数 55

有没有办法在我的AngularJS应用程序启动时执行一些JavaScript代码?我有一些常见的代码,我需要确保在任何应用程序指令/控制器之前运行。我不想被绑在路由和ng-view,我需要这是一个通用的解决方案,为任何ng-app

我认为我可以使用Module Config,实际上我也尝试过,但我正在尝试调用一个服务,这似乎不可能在模块加载时访问。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-09 23:46:42

你可以这样做,

代码语言:javascript
复制
var app = angular.module('myApp',[]);

app.run(function($rootScope) {
    //.....
});
票数 81
EN

Stack Overflow用户

发布于 2015-07-19 17:58:09

简短版本

您需要使用module.run(initializationFn)函数,其中实际的方法可以依赖于服务。您可以像往常一样注入依赖项:

代码语言:javascript
复制
var app = angular
    .module('demoApp', [])
    .run(['$rootScope', function($rootScope) {
        $rootScope.bodyClass = 'loading';
        // Etc. Initialize here.
    }]);

该示例的初始化依赖于$rootScope,但您也可以注入服务等。

较长版本

The relevant module.run documentation相当简洁,其他(优秀)答案也是如此。让我将其组合成一个更详细的示例,该示例还展示了如何在initializationFn中注入factory创建的服务

代码语言:javascript
复制
var app = angular.module('demoApp', []);

// Service that we'll also use in the .run method
app.factory('myService', [function() {
  var service = { currentItem: { started: new Date() } };
  
  service.restart = function() {
    service.currentItem.started = new Date();
  };
  
  return service;
}]);

// For demo purposes
app.controller('demoCtrl', ['$scope', 'myService', function($scope, myService) {
  $scope.header = 'Demo!';
  $scope.item = myService.currentItem;
  $scope.restart = myService.restart;
}]);

// This is where your initialization code goes, which
// may depend on services declared on the module.
app.run(['$window', 'myService', function($window, myService) {
  myService.restart();
  $window.alert('Started!');
}]);
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="demoApp" ng-controller='demoCtrl' ng-cloak>
  <h1>{{ header }}</h1>
  <p>Current item started: {{ item.started }}</p>
  <p><button ng-click="restart()">Restart</button></p>
</div>

票数 27
EN

Stack Overflow用户

发布于 2013-10-09 23:43:56

您可以使用Module API中的"run“函数:http://docs.angularjs.org/api/angular.Module

这段代码将在注入器创建后执行,因此您应该能够获得要使用的服务。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19276095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档