1

アプリケーションのAngular jsで定数jsファイルを作成しようとしています。以下のコードを使用して、アプリケーション全体の定数を実装しています。それはうまくいっています。

<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>

私の懸念は、ルーティングのみを書きたいapp.jsファイルにあります。定数については、別のファイルを書きたいので、アプリケーションのすべてのコントローラーに対して同じファイルを呼び出します。

アプリケーション全体で、宣言したい200以上の定数になる可能性があるため、コントローラーごとに個別のファイルまたは分割定数ファイルにしたいと考えています。

メンテナンスしやすい方法を教えてください。

前もって感謝します

4

3 に答える 3

2

別のモジュールを使用して、すべての定数、ファクトリ、サービス、または値を処理することにより、別のファイルを維持することもできます。定数を処理するには、以下のコードでアイデアが得られます

例えば:

スクリプトファイルapp.jsの後にファイルを含めますconstant.js

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

あなたのconstant.jsで

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

詳細については、http://www.learn-angular.org/#!/lessons/handling-complexity を参照してください。

于 2016-07-14T07:19:26.653 に答える
2

この方法で定数を定義できます

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

コントローラーでは、この方法でアクセスできます config.key1OR config.key2. このようにして、必要に応じて定数を定義できます。

注: への参照/注入を忘れないでくださいconfig

よろしく

于 2016-07-14T05:55:00.150 に答える
0

アプリケーションに serviceUrl という名前の定数が必要だとします。簡単な方法は次のとおりです。

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

「ngRoute」はオプションです。アプリケーションが ngRoute を使用していない場合は無視してください。

一部のデータを投稿するときに、サービス内でアクセスできます

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
        })

}}

于 2017-10-13T07:21:36.220 に答える