gpt4 book ai didi

javascript - ngResource promise 揭示模块模式

转载 作者:行者123 更新时间:2023-11-29 21:56:23 24 4
gpt4 key购买 nike

我正在尝试了解 Angular 中的一些最佳实践,并希望在工厂中结合上述模式以从 REST API 检索数据:

function feedFactory($resource) {
var service = {
feedData: [],
};
getFeedFromApi();

return service;

function getFeedFromApi() {
var feed = $resource('http://footballdb.herokuapp.com/api/v1/event/de.2014_15/teams?callback=JSON_CALLBACK', {}, {
query: {
method: 'JSONP'
}
});

feed.query().$promise.then(function(result) {
service.feedData = result.toJSON();
});
}
}

不幸的是,我无法设置服务对象的 feedData 变量,尽管我收到了一个包含数据的有效 promise 对象。

最佳答案

你的样子deal with asynchronous requests是不正确的。在您退回时无法获得回复。所以它是 undefined

通常 Angular 工厂看起来像这样:

function feedFactory($resource) {

var service = {
getFeedFromApi: getFeedFromApi
};

function getFeedFromApi() {

var feed = $resource('http://footballdb.herokuapp.com/api/v1/event/de.2014_15/teams?callback=JSON_CALLBACK', {}, {
query: {
method: 'JSONP'
}
});

return feed.query().$promise.then(function (result) {
return result.toJSON(); // you really need to convert response to string?
});
}

return service;
}

然后你可以这样在 Controller 中使用它们:

feedFactory.getFeedFromApi().then(function(data) {
// do something with data
});

关于javascript - ngResource promise 揭示模块模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26360353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com