2016-04-07 8 views
0

Ich habe eine Variable, die ich in Rootscope deklariert, um unter anderen Controllern zu teilen.Syntax zum Deklarieren mehrerer Werte in Rootscope

Ich muss auch mehr als eine Variable im rootscope platzieren.

Syntaktisch, wie würden Sie das tun.

Dies ist meine Definition für nur eine Variable in rootscope zu deklarieren.

(function (module) 
{ 
    angular.module("sample", []).run(["$rootScope", function($rootScope){$rootScope.TaxPercent = 30;}]); 
. 
. 
. 
} 
+0

Sie können angular.extend verwenden, um einem Objekt mehrere Eigenschaften auf einmal hinzuzufügen. – ste2425

Antwort

1

$rootScope ist ein Objekt, so dass nur Eigenschaften zuweisen:

$rootScope.TaxPercent1 = 30; 
$rootScope.TaxPercent2 = 40; 

Oder

$rootScope.TaxPercent = {percent1: 30, percent2: 40}; // SET 
console.log($rootScope.TaxPercent.percent1); // GET 

aber nicht:

$rootScope = {percent1: 30, percent2: 40}; 

Weil Sie die zuvor alle überschrieben werden Datensatz auf das Objekt

+0

Wie würden Sie diese Variable syntactaclly mit meiner Zeile in meiner Frage geschrieben? Weil ich Fehler bei der Entwurfszeitkompilierung erhalte, wenn ich eine der beiden ersten Lösungen anwende. – sagesky36

+0

Nicht sicher - Was ist das 'Modul', das an die Funktion übergeben wird? Wenn Sie das Modul "sample" bereits an anderer Stelle in Ihrer App definiert haben, sollte die Zeile "angular.module (" sample ") lauten. Run ([....' (ohne die ** [] **) –

1

Im Allgemeinen $rootScope sollte Variablen nicht verwendet werden für verschiedene und viele Gründe zu teilen, die in Artikeln vor wie erläutert wurden: here

Was passiert, wenn Sie über Ihren $rootScope.TaxPercent = 30; globalen Variable vergessen und dann Sie erstellen eine Variable $scope.TaxPercent in Ihrem Controller? Das würde sicher Probleme verursachen.

einfach eine Option hier bietet und was auf die Verwendung von Angular Services

Hier ist ein sample example wie Angular Servicearbeiten

aus dem Winkel FAQ-Seite:

Natürlich globaler Zustand saugt und Sie sollten $ rootScope sparsam verwenden, so wie Sie es (hoffentlich) mit globalen Variablen in jeder Sprache verwenden würden. Verwenden Sie es insbesondere nicht für Code, sondern nur für Daten. Wenn Sie versucht sind, eine Funktion auf $ rootScope zu setzen, ist es fast immer besser, sie in einen Dienst zu stellen, der dort injiziert werden kann, wo er benötigt wird, und einfacher getestet werden kann.

+1

Sehr gültiger Punkt: Es ist besser, Dienste zu verwenden, um Daten in der gesamten Anwendung zu teilen –

Verwandte Themen