2015-05-12 2 views
5

Ich versuche eine Angularjs - Datei zu verstehen, die ich benutzen muss, um sie mit Django zu integrieren, und sie hat eine komische Syntax, die ich nicht kenne (bedenkt, dass ich ein Junior - Entwickler bin, also könnte das dein Brot sein Butter) ...Warum wird 'window.angular' in dieser Funktionsdefinition so verwendet?

es geht ungefähr so:

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

ich this über die JavaScript-Konzept eines Fensters gesehen habe und es zeigt, dass die window Teil ist die oben() Ebene Objekt der Browser? Erstellt beim Laden der Seite.

Das Ausführen console.log(window.angular) druckt eine Last von internem angularem Zeug aus. Ich vermute also, dass das der innere Mut von AngularJS ist ...?

Aber warum diese seltsame Verkapselung als Funktion (etwas mit JavaScript eine "funktionale" Sprache zu tun)?

Das vollständige Skript ist here und ich kann nicht herausfinden, warum es window.angular in dieser Funktionsdefinition verwendet (im Gegensatz zu den normalen Weg der Dinge zu tun). Es scheint, als ob diese Einrichtung bedeutet, dass es für meine Anwendung nicht funktioniert, wenn ich es über script Tags importiere.

Antwort

8

window.angular ist die globale Variable angularjs, die erstellt wird, sobald angularjs vollständig aus einem Skript-Tag geladen wurde. Das eingefügte Codefragment stellt sicher, dass es nach der Auffüllung dieser Variablen ausgeführt wird. Ein Grund, warum es auf diese wortreiche Weise geschrieben werden könnte, ist einfach seine automatisch generierte Natur. In einem weiteren Kontext kann dies Auswirkungen auf die Reihenfolge haben, in der Skripte ausgeführt werden, oder auf die Verwendung verschiedener Versionen der angularjs-Bibliothek.

Verwandte Themen