2014-02-05 2 views
8

필자는 RequireJS 및 Backbone과 함께 작업했으며 일반적으로 구성에 사용하는 로컬 json 파일을로드하려면 requirejs/textrequirejs-plugins을 사용했습니다.AngularJS에서 로컬 파일 읽기

AngularJS에서 어떻게 동일한 결과를 얻을 수 있습니까?

누구나 $ http를 사용하는 것이 좋습니다. 그러나 이것이 유일한 방법입니까? 20 개의 구성 파일이 있다면 실제로 20 개의 전화를해야합니까?

어쩌면 ng-constant과 같은 것이 "선호되는"방법일까요?

+0

20 구성 파일!? 그것은 많은 설정입니다! –

+0

예. 오 오히려 그것은 주로 라벨과 물건이거나 고정 된 환율의 긴 목록과 같습니다. – user1241320

답변

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을 당신이 jQuery의 getJSON 기능을 사용할 수

7

에서 그들을 참조 할 수도 있겠죠?

예컨대 무언가 같이 :

$.getJSON("config-1.json", function(data) { 
    // do whatever you want 
}); 
+0

나를 위해 작동하지 않습니다. –

관련 문제