gpt4 book ai didi

javascript - AngularJS Controller 返回工厂但不显示在模板中

转载 作者:行者123 更新时间:2023-11-30 14:23:42 26 4
gpt4 key购买 nike

我的 Controller 正在调用服务工厂,我看到工厂成功地调用了 API 并将结果返回给 Controller ,但是分配给 Controller 的模板没有呈现结果。

工厂:

.factory("clubService", function($http,$q) {
var clubs= [] ;
function clubsAll() {
clubs = [] ;
setVars() ; // function to set baseUrl/headers, etc
var dataObj = [{"type":1,"userID":userData.user_ID}]
var req = {
method: 'POST',
url: baseUrl ,
headers: headers,
data: JSON.stringify(dataObj)
}
return $http(req)
.then(function(response){
clubs = response.data ;
return clubs ;
}).catch(function(err) {
errMgmt("services/apiCall",700,err.code+", "+err.msg) ;
});
}

return {
all: function() {
return clubsAll() ;
//return clubs ;
}
}) ;

Controller :

.controller('ClubCtrl', function($scope,$state,clubService) {

$scope.clubs = clubService.all() ;
console.log($scope.clubs) ; // 'clubs' is getting populated in console.
})

在我的 HTML 中

   <div ng-if="clubs.length == 0">
<img ng-src="img/loader.gif">
</div>
<div ng-if="clubs.length > 0">
<div ng-repeat="club in clubs">
{{club.Name}}
</div>
</div>

但我的 HTML 中没有任何内容被渲染,任何引用 clubs 的内容都没有显示,ng-if 仍然被注释掉,没有 ng-repeat 显示。

最佳答案

在 clubService, clubsAll() 方法中,当你声明这一行时,你实际上是在返回一个 promise

return $http(req)
.then(function(response){
clubs = response.data ;
return clubs ;
}).catch(function(err) {
errMgmt("services/apiCall",700,err.code+", "+err.msg) ;
});

该 promise 可以被解决(成功)或被拒绝(错误),如果您想从该 promise 中获取俱乐部数据,您需要在 promise 成功回调 (.then) 上链接 Controller 逻辑

.controller('ClubCtrl', function($scope,$state,clubService) {

clubService.all().then(function(response){
$scope.clubs = response;
});
})

关于javascript - AngularJS Controller 返回工厂但不显示在模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300993/

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