我是angularjs的新手,我遇到了一个非常讨厌的问题。 在我的应用程序中,我正在使用一个包含所有功能的工厂,并让控制器使用它们。 我创建了一个返回数组并在网页上打印的函数, 但是当返回的数组只包含1个变量时,它会打印一个空列表。当数组中有多个变量时,它可以正常工作。 console.log显示数组包含变量,但不会在我的列表中打印它。
如果重要的话,我也在使用bootstrap。
我希望我能正确解释我的问题。 谢谢你的帮助!
厂:
function getArray(var){
return $http.get(restURL+var).then(
function(response){
return response.data.coupon;
}
);
}
控制器:
$scope.getArrayFunction = function(){
appServicesProvider.getArray($scope.var).then(function(coupons){
$scope.arrayVar = coupons;
})
}
HTML:
<div id="getArrayDiv">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th> Title</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="coupon in arrayVar">
<td>{{coupon.id}}</td>
<td>{{coupon.title}}</td>
</tr>
</tbody>
</table>
<input type="text" class="form-control" placeholder="Enter Type" ng-model="var" required="true">
<button class="btn btn-success" ng-click="getArrayFunction()" >Get Array</button>
</div> <!-- /getArrayDiv -->
答案 0 :(得分:2)
我相信当只有一条记录要返回时,你的API会返回一个对象(而不是数组),而当有多条记录时,你会返回一个数组。
所以,这是解决方法,只需用以下语句替换工厂方法的return语句,它应该可以正常工作。
return [].concat(response.data.coupon);
以下是了解有关concat
功能的更多信息的参考链接:https://www.w3schools.com/jsreF/jsref_concat_array.asp
希望这可以解决您的问题。干杯!
答案 1 :(得分:0)
这是因为你没有打电话给你的功能,请你以这种方式宣布后再打电话给你的功能
$scope.getArrayFunction();