2017-12-19 3 views
0

몇 시간 씩 찾아 보았지만 해결책을 찾지 못했습니다. 내 AngularJS 응용 프로그램에서 별도의 json 파일에서 데이터를 검색하려고합니다. $ http를 사용하면 원하는 데이터를 얻을 수 있습니다. 그러나 여러 위치에서 해당 파일의 특정 데이터를 가져 오려고합니다. 이 서비스에서는 컨트롤러가 데이터를 검색하기 위해 호출 할 수있는 몇 가지 함수 ($ http를 사용하여 얻은 서비스)를 정의하려고합니다. 이제 모든 데이터를 컨트롤러로 직접 반환하거나 나중에 서비스에서 사용하려고하면 할당 된 변수가 정의되지 않습니다. 컨트롤러를 사용하려고합니다. 구문은이므로 $ scope를 사용하고 싶지 않습니다. 그러나 내가 찾은 모든 솔루션은 $ scope를 사용하도록 제안합니다. 이 코드는 이제 f {$$state: {...}}을 기록합니다. 서비스의

코드 : 컨트롤러의

theApp.service('SettingsService', function($http) { 
    this.dataVar = $http.get('../settings.json') 
    .then(function(response) { 
     return response; 
    }); 
}); 

코드 :

theApp.controller('SomeController', ['SettingsService', function(SettingsService) { 
    console.log(SettingsService.dataVar); 
}]); 
+0

당신이 뭘 하려는지 같은 인스턴스를

HTML을로드 서 비 스? 이'SettingsService.dataVar'는 약속을 반환합니다. – Hoyen

+0

서비스가받는 데이터 안에있는 값을 사용하려고합니다. 응용 프로그램의 여러 위치에서 다른 값을 사용하고 싶습니다. – marzman95

답변

0

UPDATE : https://jsfiddle.net/md954y0a/

것을 시작 모듈에서 서비스를 호출에 대한 다음을 통해 하위 모듈로 전달합니다.

<div ng-app='myApp' ng-controller="myctrl"> 
    {{parent}} 
    <div ng-app='myApp1' ng-controller="myctrl1"> 
    {{myApp1data}} 
    </div> 
    </div> 

JS :

angular.module('myApp', ['myApp1']).controller('myctrl', ['$scope', 'API', function($scope, API) { 
$scope.parent = API.getData(); 

}]).service('API', function($q) { 
    var object = null; 
    this.getData = function() { 
    object = { 
     obj1: "DATA1", 
     obj2: "DATA2" 
    }; 
    return object; 
    } 
}); 


angular.module('myApp1', []).controller('myctrl1', ['$scope', 'API', function($scope, API) { 
    $scope.myApp1data = API.getData().obj1 

}]); 
+0

이것은 응용 프로그램의 여러 위치에서 데이터 내부의 다른 값을 가져올 수있는 가능성을 제공하지 않습니다. 필자는 필요한 데이터를 반환하는 서비스에서 get 함수를 사용하여 다른 값을 검색하려고합니다. – marzman95

+0

업데이트 된 답변 확인 데이터를 분리하여 의미하는 바를 생각하면 작업 할 수있는 약속이 필요합니다. –