9

以前は RequireJS と Backbone を使用し、requirejs/textrequirejs-pluginsを使用して、通常は構成に使用するローカル json ファイルをロードしていました。

AngularJS で同じことを達成するにはどうすればよいですか?

誰もが $http を使用することを提案しているようですが、これが唯一の方法ですか? 20 個の構成ファイルがある場合、本当に 20 回の呼び出しを行う必要がありますか?

多分ng-constantのようなものが「好ましい」方法ですか?

4

3 に答える 3

8

これが私がしたことです。しかし、それは $http を使用しているので、誰かがより良い解決策を持っていることを願っています.

app.js:

var myModule = angular.module('myApp', []);

myModule.config(function($routeProvider, $locationProvider) {
    $routeProvider.when('/', {
        templateUrl: 'html/home.html',
        controller: 'MainCtrl as ctrl',
        resolve: {
            initializeData: function($q, $timeout, myService) {
                return myService.promiseToHaveData();
            }
        }
    });
});

myService.js:

var myModule = angular.module('myApp');

myModule.service('myService', function($http, $q) {
    var _this = this;

    this.promiseToHaveData = function() {
        var defer = $q.defer();

        $http.get('someFile.json')
            .success(function(data) {
                angular.extend(_this, data);
                defer.resolve();
            })
            .error(function() {
                defer.reject('could not find someFile.json');
            });

        return defer.promise;
    }
});

次に、myService をどこにでも挿入でき、json ファイルのすべてのフィールドが含まれます。

あるいは、.json ファイルを .js ファイルにして、それらにグローバル変数を公開させ、index.html で参照することもできると思います。

于 2014-02-05T22:31:23.673 に答える