2016-04-01 10 views
0

配列を入れ替えてjsonファイルを取得したいのですが、私のコードに何か問題があるのか​​、どこに問題があるのか​​分かりませんHTTPリクエストは動作します)。

incriminatedコード

(function() { 
    (function() { 
    var JsonsService; 
    JsonsService = function($http) { 
     var pizze; 
     pizze = []; 
     return { 
     getPizze: function() { 
      $http.get('data/pizze-it.json').then(function(pizze) { 
      pizze = pizze.data; 
      }); 
     } 
     }; 
    }; 
    JsonsService.$inject = ['$http']; 
    angular.module('myApp').factory('JsonsService', JsonsService); 
    })(); 

}).call(this); 

(function() { 
    (function() { 
    var JsonsCtrl; 
    JsonsCtrl = function(JsonsService) { 
     var self; 
     self = this; 
     self.list = function() { 
     return JsonsService.getPizze(); 
     }; 
    }; 
    JsonsCtrl.$inject = ['JsonsService']; 
    angular.module('myApp').controller('JsonsCtrl', JsonsCtrl); 
    })(); 

}).call(this); 

Plnkr

私はいくつかがあります(このエラー(サービスおよびコントローラー)を引き起こしているコードのブロック全体app.jsから取り出し、そしてDontLoadThis.js内側に配置

答えて

1

これは必ずしも明確な答えではありませんが、間違っていることに気付いたことがいくつかあります。

あなたJsonsServiceを皮切り:

JsonsService = function($http) { 
    var pizze; 
    pizze = []; 
    return { 
     getPizze: function() { 
      $http.get('data/pizze-it.json').then(function(pizze) { 
       pizze = pizze.data; 
      }); 
     } 
    }; 
}; 

あなたは変数pizzeを初期化するだけでなく、$http.get()にコールバック変数pizzeを使用しています。代わりに、私はお勧め:

var pizze = []; 

... 

$http.get('data/pizze-it.json').then(function(json_response) { 
    pizze = json_response.data; 
}); 

しかし、これは第二の問題により、冗長化されています。JsonsService.getPizze()は実際には何も返しません。これを回避するには、getPizze()から約束を返し、コントローラーの結果を処理することが考えられます。 [plnkr](http://plnkr.co/edit/GcCdg2VrVUY6mYRPHKMI?p=preview)を更新しました

// in service 
return { 
    getPizze: function() { 
     return $http.get('data/pizze-it.json'); 
    } 
}; 

// in controller 
JsonsCtrl = function(JsonsService) { 
    var self; 
    self = this; 
    self.list = []; 

    JsonsService.getPizze().then(function (json_response) { 
     self.list = json_response.data; 
    }); 
}; 
+0

、無限エラーループが解消されたが、それでも私は、データを受信して​​いないよ –

+0

問題は今あります'ng-repeat'では。 'item in jsons.list'を使うべきです。 [私を参照してください](http://plnkr.co/edit/bAIbUQ7WYwwNVtHwGeOY?p=preview) – Ankh

+0

ああ素敵な作品:Dが、私に物事を教えてください:どのように今、getPizzeどこにでも電話しますか? –

関連する問題