2

サーバーから JSON 応答を読み取ろうとしています。ここで私のコードを見つけることができます。 https://github.com/ameyjah/feeder

firefox firebug では、サーバーが JSON 応答を返したことを確認できますが、それを $scope.variable に保存すると、その情報にアクセスできません。

モジュール コード var res

angular.module('myApp.services', ['ngResource'])
    .factory('feedFetcher', ['$resource',
        function($resource) {
            var actions = {
                'sites': {method:'GET', params: { action:"sites"} ,isArray:false},                           
                'feeds': {method:'GET', params: { action:"sites"} ,isArray:false}
            }
            res = $resource('/api/:action', {}, actions);
            return res
        }
    ]);

コントローラーコード

$scope.sites = feedFetcher.sites().sites;
console.log($scope.sites);

firebug で見られる応答:

{
  "sites": [
    {
      "id": 0,
      "title": "google"
    },
    {
      "id": 1,
      "title": "yahoo"
    }
  ]
}

工場を定義する方法を台無しにしたと思いますが、特定できません。どんな助けでも役に立ちます。

4

1 に答える 1

1

sites() を呼び出すと、空のオブジェクトが返され、AJAX 要求が開始されます。これにより、そのオブジェクトの "sites" プロパティが設定されます。次のように使用する必要があると思います。

$scope.results = feedFetcher.sites();
console.log($scope.results.sites); // will be undefined as AJAX not complete

次に、HTML で結果を使用できます。結果は AJAX の完了時に入力されるか、監視されます。

$scope.$watch('results.sites', function() {
    // this will be called twice, once initially
    // and again whenever it is changed, aka when AJAX completes
    console.log($scope.results.sites);
}; 
于 2013-07-03T05:38:15.167 に答える