私のHTTPサービスから自分のコントローラにデータを送信しようとしています。サービスはデータを正しく取得しますが、コントローラに送信されません。サービスからコントローラにデータを正しく渡す方法
質問が非同期的に行われていることがわかりました。そのため、私は$ q.deferを使用しようとしています。 私は同様の質問で提供されている例に従ってみました:AngularJS $http call in a Service, return resolved data, not promises、それでも動作しません。ここで
は私のサービスです。.service("builds", ['$http', '$q', function($http, $q) {
var deferred = $q.defer();
$http({
method:'GET',
url: '/builds',
cache : true
}).success(function(data) {
deferred.resolve(data);
}).error(function(msg){
deferred.reject(msg);
});
console.log(deferred.promise);
return deferred.promise;}]);
そして、ここで私のrouteProvider
$routeProvider.
when('/builds', {
controller: ['$scope', 'buildsData', function ($scope, buildsData) {
console.log("In routeprovider:" + buildsData);
$scope.allBuilds = buildsData;
}],
template: '<build-list></build-list>',
resolve: {
buildsData: ['builds', function(builds){
return builds;
}]
}
})
そして最後にここに私のコントローラの抜粋です:
var app = angular.
module('buildList').
component('buildList', {
templateUrl: 'build-list/build-list.template.html',
controller: function BuildListController($scope, $window,$location,$cookies, builds) {
console.log($scope.allBuilds);
$scope.league = $scope.allBuilds;
すべきコントローラでは、コントローラ
でこのメソッドを呼び出すべきであると言う関数を作成コントローラーからデータを取得します。そのロジックをカプセル化し、そのメソッドをctrlから呼び出すサービス内のメソッドを作成します。 –