带有1个变量的Angularjs数组不会使用ng-repeat

时间:2017-08-26 11:16:01

标签: angularjs arrays

我是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>&nbsp;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 -->  

2 个答案:

答案 0 :(得分:2)

我相信当只有一条记录要返回时,你的API会返回一个对象(而不是数组),而当有多条记录时,你会返回一个数组。

所以,这是解决方法,只需用以下语句替换工厂方法的return语句,它应该可以正常工作。

return [].concat(response.data.coupon);

以下是了解有关concat功能的更多信息的参考链接:https://www.w3schools.com/jsreF/jsref_concat_array.asp

希望这可以解决您的问题。干杯!

答案 1 :(得分:0)

这是因为你没有打电话给你的功能,请你以这种方式宣布后再打电话给你的功能

$scope.getArrayFunction();