2016-07-14 15 views
0

Ich versuche, Konstanten js Datei in eckigen js für eine Anwendung zu erstellen. Ich verwende den folgenden Code, um Konstanten für die gesamte Anwendung zu implementieren. Es funktioniert gut.Setze globale Konstanten in AngularJs

<code> 
// app.js 
angular.module('myApp', [ 
     'ngCookies', 
     'ngResource', 
     'ngSanitize', 
     'ngRoute' 
    ]) 
    .constant('config', { 
     mySetting: 42 
    }) 
    .config(function ($routeProvider) { 
     $routeProvider 
      .when('/', { 
       templateUrl: 'views/main.html', 
       controller: 'MainCtrl' 
      }) 
      .otherwise({ 
       redirectTo: '/' 
      }); 
    }); 
</code> 

Meine Sorge ist, in app.js Datei, die ich nur Routing schreiben wollen, für Konstanten möchte ich separate Datei schreiben, und ich werde für alle Controller in meiner Anwendung derselben Datei aufrufen.

Für die gesamte Anwendung könnte 200 + Konstanten, die ich deklarieren möchte, so möchte ich es ist eine separate Datei oder Split-Konstanten-Datei für Controller weise.

Bitte führen Sie mich, welcher Weg für die Wartung einfach ist.

Vielen Dank im Voraus

Antwort

1

Sie Konstanten auf diese Weise definieren können

app.value('config', { 
    "key1": "value1", 
    "key2": "value2" 
}); 

und Controller können Sie auf diese Weise config.key1 ODER config.key2 zugreifen. Auf diese Weise können Sie beliebig viele Konstanten definieren.

Hinweis: Vergessen Sie nicht, die Referenz/Injektion an config zu geben.

Grüße

+2

Verwenden '.constant' statt, da' .value' Objekte geändert werden sollen. Außerdem können Sie '.value' nicht in Konfigurationsmethoden injizieren. – Narayon

1

Sie können auch eine separate Datei beibehalten, indem ein anderes Modul zu handhaben alle konstant, Fabrik, Dienstleistungen oder Wert. Um Ihre Konstanten der folgende Code zu behandeln gibt Ihnen und Idee

ZB:

sind Ihre app.js Datei nach, dass Ihre constant.js Skriptdatei

var myApp = angular.module("myApp", ['myConstants']); //constants module injection 
myApp.controller("myController", ["$scope", "myValue", function() { 
.... 
}]); 

in Ihrem constant.js

angular.module("myConstants", []).constant('myValue', 'The value'); 

Für mehr Verständnis siehe http://www.learn-angular.org/#!/lessons/handling-complexity

0

Hiermit können Sie eine Konstante mit dem Namen ServiceUrl in Ihrer Anwendung haben Nehmen wir wollen .hier ist eine einfache Art und Weise

angular.module('myApp', ['ngRoute']) 
.value('serviceUrl','http://localhost:8080/hello') 

‚ngRoute‘ ist optional. Ignoriere es, falls deine Anwendung nicht ngRoute verwendet.

Kann es in einem Dienst zugreifen, wie einige Daten veröffentlichen

angular.module('myApp'). 
service('myService', ['$http', 'serviceUrl',function($http,serviceUrl){ 
    this.getData= function(data){ 
     console.log(JSON.stringify(data)); 
     return $http({ 
      method: 'POST', 
      url: serviceUrl 
      data: data 
     }) 

}}