Window.onload не работает в AngularJS - программирование
Подтвердить что ты не робот

Window.onload не работает в AngularJS

Этот код в простом файле HTML работает:

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

Однако, если я помещаю его в файл index.html веб-приложения AngularJS, это не так. Кто-нибудь знает, почему нет?

4b9b3361

Ответ 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() {
});