这个代码在一个简单的HTML文件中起作用:
<script>
function load() {
alert("load event detected!");
}
window.onload = load;
</script>
但是,如果我将它放入AngularJS Web应用程序的index.html文件中,它就不会。有谁知道为什么不呢?
答案 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() {
});