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);

在萤火虫中看到的回复:

{
  "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 回答