gpt4 book ai didi

angularjs - 当 http 请求正在进行时如何获取我的 Controller 的数据?

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:18 24 4
gpt4 key购买 nike

我有以下 Controller

1) 介绍Ctrl

2) 文章Ctrl

3)文章服务(Service)

现在我从 introCrtl 发送一个 http 请求

 .controller('IntroCtrl', function($scope, articleService) {
articleService.getArticles();
});

而 AricleCtrl 是

  .controller('ArticleCtrl', function($scope,$rootScope,articleService) {
$scope.articles = articleService.fetchArticles();
})

我的服务是

.service('articleService', function ($http, $q) {

var articleList = [];
var getArticles = function() {
$http({
url: "muylink,co,",
data: { starLimit: 0, endLimit: 150,created_date: 0 },
method: 'POST',
withCredentials: true,
}).success(function (data, status, headers, config) {
articleList.push(data);

}).error(function (err) {
console.log(err);
})
};

var fetchArticles = function() {
return articleList[0];
}

return {
getArticles: getArticles,
fetchArticles: fetchArticles
};



});

这也运行良好。现在的问题是

有时我的http请求发送响应晚了,我什么也没有

$scope.articles

我们可以在这里实现监视吗?我需要如何在这里实现 $watch 。我不想兑现 promise 。因为我想在后台运行 http 请求。

谢谢

最佳答案

如果您使用 ui-router 切换到基于状态的设置会更好,这样您就可以做到这一点:

$stateProvider.state('myState', {
url: 'the/url/you/want',
resolve:{
articleService: 'articleService' // you are dependency injecting it here,
articles: function (articleService) {
return articleService.getArticles.$promise;
}
},
controller: 'IntroCtrl'
})

// then your controller can just inject the articles and they will be resolved before your controller loads so you it will always be fetched prior

.controller('IntroCtrl', function($scope, articles) {
$scope.articles = articles;
});

有关更多信息,请查看此

ui-router info

关于angularjs - 当 http 请求正在进行时如何获取我的 Controller 的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31286527/

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