2016-10-11 12 views
0

配列要素が1つあるJSONオブジェクトを受け取りました。これらの数値データの平均を求め、それをng-modelに割り当てます。配列要素の平均データをng-modelに割り当てる必要があります:角度

my 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-評価のNG-モデル

マイビュー

<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); 
    }; 

しかし、動作しません。

答えて

0

平均を格納するJSONオブジェクトに新しいプロパティを追加し、それをng-modelに割り当てることができます。

<span uib-rating ng-model="data.average" max="max" read-only="isReadonly"></span>

0

DTOを作成します:あなたは、コントローラ内のデータを取得したら、data[]をループとは、この項目のため、あなたのビューバインドの平均評価あなたのng-modelある新しいaverageプロパティを追加することができますサーバー側には、名前、評価、平均などの属性があります。サーバ側(残りのAPI)の平均を計算し、DTOに返します。