2017-12-19 5 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をロードしervice?この 'SettingsService.dataVar'はPromiseを返します。 – 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

私の更新された答えを確認してください私はあなたがデータを分離することによって何を意味すると思います、あなたは仕事を約束する必要があります –

関連する問題