【问题标题】:Need to assign average data of array element to ng-model : Angular需要将数组元素的平均数据分配给 ng-model :Angular
【发布时间】:2016-10-11 05:49:19
【问题描述】:

我收到 JSON 对象,其中有一个数组元素,我想要这些数字数据的平均值并将其分配给视图中的 ng-model。

我的 Json 对象。

{
    "status": "success",
    "data": [{
        "name": "[1] Data 1",
        "ratings": [4, 5, 5, 5, 3, 5, 4, 5, 3]
    }, {
        "name": "[2] Data 2",
        "ratings": [2, 4, 2, 2, 3, 1, 2, 5]
    }, {
        "name": "[3] Data 3",
        "ratings": [3, 3, 3, 3, 3, 3, 3, 3]
    }]
}

现在,我想将“评分”数据的平均值分配给 uib-rating 的 ng-model

我的观点

  <ul class="video-list">
        <li ng-repeat="data in getVideoListsCtrl.result" class="col-sm-3 col-xs-12" ng-click="getVideoListsCtrl.loadSingleVideoAndPlay(data)">
          <span class="vname">{{data.name}}</span>
          <span class="vratings">
            <span uib-rating ng-model={{data.ratings | avarageConverter}} max="max" read-only="isReadonly">
            </span>
          </span>
        </li>
      </ul>

我尝试使用调用函数或应用过滤器。

.filter('avarageConverter', function() {
    return function (arr) {
      var sum = 0;
      for(var i=0; i<arr.length; i++) {
        sum += arr[i];
      }
      return sum / (arr.length === 0 ? 1 : arr.length);
    };

但它不起作用。

【问题讨论】:

    标签: angularjs arrays average angular-ngmodel


    【解决方案1】:

    您可以向存储平均值的 JSON 对象添加一个新属性,然后将其分配给您的 ng-model。在控制器中检索数据后,您可以遍历 data[] 并添加一个新的 average 属性,该属性是该项目的平均评分,并在您的视图中将其绑定到您的 ng-model

    &lt;span uib-rating ng-model="data.average" max="max" read-only="isReadonly"&gt;&lt;/span&gt;

    【讨论】:

      【解决方案2】:

      在服务器端创建一个具有以下属性的 DTO:名称、评级和平均。计算服务器端的平均值(你的 rest api)并在 DTO 中返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-03
        • 2015-06-09
        • 1970-01-01
        • 2021-09-18
        • 2014-04-17
        • 2022-01-11
        • 2013-12-29
        • 1970-01-01
        相关资源
        最近更新 更多