2015-05-12 20 views
5

Próbuję zrozumieć plik angularjs, którego muszę używać do integracji z Django, i ma dziwną składnię, której nie znam (pamiętaj, że jestem młodszym twórcą, więc to może być twój chleb i masło) ...Dlaczego użyto "window.angular" w tej definicji funkcji?

to idzie mniej więcej tak:

(function(angular, undefined){ 
    'use script'; 
    var djng_forms_module = angular.module('ng.django.forms', []); 
    funtion hasCode(s){ 
     return ..... 
    } 
    var foo = ..... 
}(window.angular)); 

widziałem this o koncepcji javascript okna i pokazuje, że window częścią jest top() obiektu poziomu przeglądarki? tworzy podczas ładowania strony.

Uruchamianie console.log(window.angular) powoduje wydrukowanie ładunku wewnętrznych elementów kątowych. Zgaduję, że to wewnętrzna żyłka AngularJS ...?

Ale dlaczego ta dziwna enkapsulacja jest funkcją (co ma związek z JavaScriptem jako językiem "funkcjonalnym")?

Pełny skrypt to here i nie mogę zrozumieć, dlaczego używa on window.angular w tej definicji funkcji (w przeciwieństwie do normalnego sposobu robienia rzeczy). Wygląda na to, że ta konfiguracja oznacza, że ​​nie działa dla mojej aplikacji, gdy importuję ją za pomocą tagów script.

Odpowiedz

8

window.angular to globalna zmienna angularjs, która jest tworzona po pełnym załadowaniu angularjs ze znacznika script. Wklejony fragment kodu gwarantuje, że zostanie wykonany po populacji tej zmiennej. Jednym z powodów, dla którego można go napisać w ten wulgarny sposób, jest po prostu jego auto-generowany charakter. W szerszym kontekście może to mieć wpływ na kolejność wykonywania skryptów lub korzystanie z różnych wersji biblioteki angularjs.

Powiązane problemy