gpt4 book ai didi

javascript - AngularJS 在 Promise 之外从工厂返回值到 Controller

转载 作者:行者123 更新时间:2023-11-28 01:10:59 25 4
gpt4 key购买 nike

我有一个 HTTP 请求设置为 .factory 中的 promise ,并且希望将结果发送到 Controller 。然而,我一直坚持将数据从 promise 中获取到我可以使用的地方。

. Controller

.controller('MainCtrl', function ($scope, Main, User) {
$scope.feedResult = function () {
var feeds = [];
return Main.feed(key).success(function (data, status, headers, config) {
for (var i = 0; i < data.length; i += 1)
{
feeds.push(data[i]);
}
return feeds;
}).error(function (data, status, headers, config) {
console.log("This was an error back from the server");
console.log(data);
return data;
});
}();
})

和.factory

        feed: function (token) {
return $http({
url: 'http://myserver.com/feed',
method: 'GET',
data: {
auth_code: token,
per_page: 10
}
}).success(function (data, status, headers, config) {
for (var i = 0; i < data.length; i += 1)
{
feeds.push(data[i]);
}
return feeds;
}).error(function (data, status, headers, config) {
console.log("This was an error back from the server");
console.log(data);
return data;
});
},

无论我如何尝试将事物放入范围内,我似乎总是以 Promise 对象结束。有人可以帮我吗?

最佳答案

成功或错误方法将始终返回一个 promise (它将您的返回值包装到一个新的 promise 中)。您应该在成功/错误回调中设置范围的值:

.controller('MainCtrl', function ($scope, Main, User) {
$scope.feedResult = [];
Main.feed(key).success(function (data, status, headers, config) {
for (var i = 0; i < data.length; i += 1)
{
$scope.feedResult.push(data[i]);
}
}).error(function (data, status, headers, config) {
console.log("This was an error back from the server");
console.log(data);
$scope.feedResult = data;
});
})

关于javascript - AngularJS 在 Promise 之外从工厂返回值到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445662/

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