2012-10-24 36 views
14

Bu kod çalışmaz çalışır: Bir angularjs web uygulamasının index.html dosyası içine koyarsanız Ancakwindow.onload basit bir HTML dosyasında angularjs

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

, öyle değil. Herkes neden olduğunu bilmiyor mu?

+1

içinde gerçekleştiğini muhtemelen yükünüzün fonksiyonu için daha iyi bir ev bulmaya çalışmalı. Üst düzey HTML öğesine bağlı bir kontrolör bunu yapabilir .. –

+1

Bir şey için daha fazla bilgiye ihtiyacımız var. Sahip olduğunuz kod, benim için kusursuz çalışıyor. Başka bir şey için ne yapmaya çalışıyorsun? Roy Truelove kesinlikle haklı, muhtemelen bir açısal uygulamada bir window.onload kullanmanız gerekmez. –

+0

Teşekkürler @RoyTruelove ve blesh. Sadece kodu index.html içinden çalıştırmayı denedim ve bu sefer çalışıyor. Neyin değiştiğine dair hiçbir fikrim yok.Muhtemelen window.onload'a ihtiyaç duymamanız konusunda haklısınız. Başka bir şekilde deneyeceğim. – Curt

cevap

4

çalışmalıdır:

jQuery (function() {/ ** benim pencere onload fonksiyonları ** /}) açısal beri

da zaten Jquery bir alt kümesini kullanır gerçek şeyi içerebilir. daha iyisi

:

olurdu: http://docs.angularjs.org/api/ng.directive:ngInit

< herhangi ng-init = "functionInController
yerine bu kullanmak yerine, başlatılıyor şeylerin açısal yolu kullanmayı düşünebilirsiniz (bir şey) "...

görünmez hale gelinceye kadar görünmez hale getirmek için: http://docs.angularjs.org/api/ng.directive:ngCloak

< herhangi ng-pelerin .....

/initialize bütün parçaları özelleştirmek için: http://docs.angularjs.org/guide/directive

< herhangi yönerge-name ....

+0

Öneriniz için teşekkürler @Heinrich. AngularJS için yeniyim, bu yüzden anlamaya biraz zaman alabilir, ama muhtemelen kontrol etmeye değer. – Curt

+0

adresinden kontrol etmek isteyebilirsiniz: http://stackoverflow.com/questions/12922532/breaking-html-into-management-templates-for-angularjs/12923289#12923289 – Heinrich

+2

ng-init buna göre kullanılmamalıdır İlgili [angularJS belgeleri] (https://docs.angularjs.org/api/ng/directive/ngInit). – Pak

3

Deneyin

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

Bu ayrıca angular.element ($ window) olabilir. – iamdash

+0

@iamdash: Sabit, thx –

+0

$ pencere tanımlı değil – ryaz

10

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>

+0

Aynı problemi yaşıyorum, tüm görüntüleri kontrol etmek için $ window.load kullanıyorum yüklendi, tüm görüntü yüklerinden sonra init aramıyor. Bundan önce patlar. –

+1

Bu tür şeyler için "ng-init" kullanmanız gerekmiyor: https://docs.angularjs.org/api/ng/directive/ngInit –

+1

@Petr Peller muhtemelen, ancak işe yaramıyor – Muhammed

9

Ben köşeli bir app.run() işlev kodu bu tür koyarak tercih ile işlevini çağırın.

örn.

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

da sırasını göstermektedir Bu güzel yazıyı kontrol bazı şeyler iki şey uyumsuz, ancak ara verdik eğer size daha sonra bir angularjs app yazmak için söylemiyorum açısal AngularJS app.run() documentation?