【问题标题】:Angularjs arrays with 1 variable won't print with ng-repeat具有 1 个变量的 Angularjs 数组不会使用 ng-repeat 打印
【发布时间】:2018-02-04 06:59:21
【问题描述】:

我是 angularjs 新手,遇到了一个非常烦人的问题。 在我的应用程序中,我使用了一个包含所有功能的工厂,并让控制器使用它们。 我创建了一个返回数组并将其打印在网页上的函数, 但是当返回的数组只包含 1 个变量时,它会打印出一个空列表。当数组中有超过 1 个变量时,它工作正常。 console.log 显示该数组包含该变量,但它不会在我的列表中打印它。

如果这很重要,我也在使用引导程序。

我希望我正确地解释了我的问题。 感谢您的帮助!

工厂:

       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 -->  

【问题讨论】:

  • 你在 html 中的任何地方使用过 ng-app 指令吗?
  • 是的,当然。正如我所说,一切正常,唯一的问题是返回的数组只包含 1 个变量。
  • @DorGolan 你能做到 {{arrayVar}} 并显示 1 个变量在 html 中的样子
  • 看起来coupons 是一个对象而不是数组
  • @MaximShoustin 我现在看到包含 1 个变量的数组实际上是一个对象,但是当变量超过 1 个时,它就是一个数组。我的java代码返回一个数组,而arrayVar被定义为一个数组,所以我不知道该怎么做..有什么想法我应该做什么?

标签: angularjs arrays


【解决方案1】:

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

所以,这里有一个解决方法,只需将您的工厂方法的 return 语句替换为以下语句,它应该可以正常工作。

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

这里是了解更多concat功能的参考链接:https://www.w3schools.com/jsreF/jsref_concat_array.asp

希望这对您的问题有用。干杯!

【讨论】:

  • 这确实有效!这是我第一次看到 concat() 函数,所以我不确定它的作用并想读一读,但结果很好。它被认为是解决我的问题的快速修复或合法方法吗?
  • concat 函数合并传入的数组或json对象并返回最终结果。这是 w3Schools w3schools.com/jsreF/jsref_concat_array.asp 的参考链接这是一个有效的解决方案(不是临时修复)。
  • 它说concat用于连接两个数组,所以我不确定它是如何解决我的问题的,但确实如此。
  • 正确,当concat函数参数为对象时,javascript在内部将对象转换为数组。
  • 我的荣幸!总是乐于帮助人们。
【解决方案2】:

这是因为你没有调用你的函数,请在你这样声明后调用你的函数

$scope.getArrayFunction();

【讨论】:

  • 我正在调用函数 - ng-click="getArrayFunction()",此外,该函数适用于具有多个变量的数组,所以我不认为这是问题所在。
  • 请在“$scope.arrayVar = coupons;”之后添加“Console.log($scope.arrayVar)”在您的函数中并在此处从浏览器的控制台写入结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 2015-06-21
  • 2016-09-06
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多