我正在尝试从服务器读取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"
}
]
}
我认为我搞砸了我应该定义工厂的方式,但我无法识别。任何帮助都会有所帮助。
答案 0 :(得分: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);
};