window.onload在AngularJS中不起作用

时间:2012-10-24 23:14:07

标签: window angularjs onload

这个代码在一个简单的HTML文件中起作用:

<script>
  function load() {
    alert("load event detected!");
  }
  window.onload = load;
</script>

但是,如果我将它放入AngularJS Web应用程序的index.html文件中,它就不会。有谁知道为什么不呢?

4 个答案:

答案 0 :(得分:11)

使用ng-init调用您的函数

var app = angular.module('app',[]);
app.controller('myController', function($scope){
    $scope.load = function () {
        alert("load event detected!");
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app'>
  <div ng-controller='myController' ng-init='load()'></div>
</div>

答案 1 :(得分:9)

我更喜欢将这种代码放在angular的app.run()函数中。

e.g。

angular
.module('testApp', ['someModule'])
.constant('aConstant', 'hi')
.config(function($rootProvider) {/*some routing here*/})
.run(['$window', function($window) {
  $window.onload = function() {/*do your thing*/};
}]);

还要查看这篇不错的帖子,其中描述了角度有些事情发生的顺序 AngularJS app.run() documentation?

答案 2 :(得分:4)

以下内容应该有效:

  

jQuery(function(){/ **我的窗口onload函数** /})

因为角度使用了jquery的子集,所以你也可以包含真实的东西。

更好的是:
您可以考虑使用初始化的角度方式来代替使用它:

将是:http://docs.angularjs.org/api/ng.directive:ngInit

  

&LT;任何ng-init =“functionInController(something)”......

使其在init:http://docs.angularjs.org/api/ng.directive:ngCloak

之前不可见
  

&LT;任何ng-cloak .....

初始化/自定义整个部分:http://docs.angularjs.org/guide/directive

  

&LT;任何指令名....

答案 3 :(得分:3)

尝试

angular.element($window).bind('load', function() {
});