web-dev-qa-db-fra.com

Lire le fichier local dans AngularJS

J'ai utilisé avec RequireJS et Backbone et utilisé requirejs/text et requirejs-plugins pour charger les fichiers json locaux que j'utilise normalement pour la configuration.

Comment obtient-on la même chose avec AngularJS?

Tout le monde semble suggérer d'utiliser $ http, mais est-ce le seul moyen? Dois-je vraiment faire 20 appels si j'ai 20 fichiers de configuration?

Peut-être que quelque chose comme ng-constant est le moyen "préféré"?

9
user1241320

C'est ce que j'ai fait. Mais il utilise $ http, donc j'espère que quelqu'un aura une meilleure solution.

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

Ensuite, je peux injecter myService n'importe où et il aura tous les champs du fichier json.

Je suppose que vous pouvez également créer vos fichiers .json .js, les faire exposer une variable globale et les référencer dans votre index.html

8
rob

Pouvez-vous utiliser la fonction getJSON de jQuery?

Par exemple, quelque chose comme:

$.getJSON("config-1.json", function( data ) {
    // do whatever you want
});
7
adilapapaya
2
dk123