Window.onload не работает в AngularJS
Этот код в простом файле HTML работает:
<script>
function load() {
alert("load event detected!");
}
window.onload = load;
</script>
Однако, если я помещаю его в файл index.html веб-приложения AngularJS, это не так. Кто-нибудь знает, почему нет?
Ответы
Ответ 1
Вызовите свою функцию с помощью 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>
Ответ 2
Я предпочитаю использовать этот тип кода в функции app.run() angular.
например.
angular
.module('testApp', ['someModule'])
.constant('aConstant', 'hi')
.config(function($rootProvider) {/*some routing here*/})
.run(['$window', function($window) {
$window.onload = function() {/*do your thing*/};
}]);
также проверьте этот хороший пост, который изображает порядок, в котором некоторые вещи происходят в angular
Документация AngularJS app.run()
Ответ 3
должно работать следующее:
jQuery (function() {/** мои функции загрузки окна **/})
так как angular использует подмножество jquery в любом случае, вы также можете включить реальную вещь.
еще лучше:
Вместо этого вы можете использовать способ инициализации angular:
который был бы следующим: http://docs.angularjs.org/api/ng.directive:ngInit
< любой ng-init = "functionInController (что-то)"...
чтобы сделать его невидимым до init: http://docs.angularjs.org/api/ng.directive:ngCloak
< любой ng-плащ.....
для инициализации/настройки целых частей: http://docs.angularjs.org/guide/directive
< любое название-указатель....
Ответ 4
Try
angular.element($window).bind('load', function() {
});