2016-04-29 5 views
0

Ich habe 3 json-Dateien mit dem Front-End meiner Web-Anwendung zu erstellen:

  1. config.json alle Optionen auf der Basis der Benutzerrechte
  2. preferences.json zu erhalten, die die Präferenzen Benutzer
  3. foo.json der das Objekt ist, dass der Benutzer durch den Web-App

In meiner Haupt-Controller, Konfiguration oder Run (ich weiß nicht, was ist die beste Art und Weise) ändern wird, würde ich mag all dies laden json und speichern Sie sie im $ rootScope, um alle Instanzen meiner Komponenten im H zu erstellen TML-Seite.

Ich habe bereits versucht, dies zu tun ...

$http.get('config/config.json').success(function(configResponse) { 
    $rootScope.config = configResponse; 
}); 
$http.get('preferences/preferences.json').success(function(prefResponse) { 
    $rootScope.preferences = configResponse; 
}); 
$http.get('foo/foo.json').success(function(fooResponse) { 
    $rootScope.foo = fooResponse; 
}); 
console.dir($rootScope); 

Leider funktioniert das nicht. Jemand hat eine Idee und den besten Weg, dies in Angular 1.5 zu tun, was den Übergang in Angular 2.0 erleichtern wird?

+1

definieren "nicht funktioniert", genau. Wo und wie führst du diese Linien aus? Was passiert genau? Sie erkennen, dass die Zeile 'console.dir (...)' lange vor der Speicherung der drei Werte im Scope ausgeführt wird, oder? das erste A in AJAX bedeutet "asynchron". –

Antwort

0

Verwenden Sie nicht $ rootScope, für die Anwendungskonfiguration wird empfohlen, ein bestimmtes Modul mit den Konfigurationsinformationen zu verwenden und jeden Konfigurationsblock als "konstant" zu registrieren.

In Ihrem Fall wurde die serverseitige Konfiguration etwas komplexer. Siehe Asynchronously Bootstrapping AngularJS Applications with Server-Side Data

(function() { 
    var appConfig=angular.module("app.config"); 
    var initInjector = angular.injector(["ng"]); 
    var $http = initInjector.get("$http"); 

    $http.get('config/config.json').success(function(configResponse) { 
     appConfig.constant("config", configResponse); 
    }); 
    $http.get('preferences/preferences.json').success(function(prefsResponse { 
     appConfig.constant("preferences", preferencesResponse); 
    }); 


})()); 

Zu Ihrer App-Modul gehören die app.config und dann können Sie die config,preferences or foo auf Ihre Winkel Controller, Dienstleistungen injizieren, ...

angular.module("app",["app.config"]) 
+0

Vielen Dank. Das funktioniert !!! nur 'var appConfig = angular.module ("app.config");' -> 'var appConfig = angular.module ("app.config" []);' , 'prefsResponse' -> 'preferencesResponse' und um config, preferences oder foo in Controllern zu verwenden, müssen wir als Parameter 'angular.module' ('GenThemeApp') hinzufügen. controller ('appController', 'config', function config) {.... ' –

+0

Froh, hilfreich zu sein !, Wenn es wirklich funktioniert, bitte als gelöst markieren. – pdorgambide