1

私は Angular を使い始めたばかりで、手動 re: スコープへのバインディングを使用できます。

プロパティを設定するデータを読み込もうとしています。次に、このプロパティに基づいて他のプロパティを更新したいのですが、これを簡単にトリガーする方法はありますか?

現時点では、私はちょうどやっています:

  1. JSON データを読み込む
  2. 設定mythings
  3. のトリガー計算mythings_processed

(2)(3)をトリガーできるはずだと思いますか?

Javascript

app.controller('MyCtrl', function($scope, $http) {

  $scope.loadData = function () {
    $http.get('/api/orgs/gocardless/issues.json').success(function(data) {
      $scope.mythings = data.things;
      $scope.generateCalculatedItems() // Surely this isn't necessary?
    });
  };

  $scope.generateCalculatedItems = function () {
    mythings_processed = {}; // Generated using mythings
    $scope.mythings_processed = mythings_processed;
  };
};

HTML

<div ng-controller="IssuesCtrl" ng-init="loadData()">
    <ul>
      <li ng-repeat="thing in things">{{thing.id}}</li>
    </ul>

    <ul>
      <li ng-repeat="processed_thing in mythings_processed">{{processed_thing.id}}</li>
    </ul>
</div>

ここで Angular に対してひどいことをしていると思いますので、お詫び申し上げます。

私はできるはずだと感じました:

  $scope.mythingsProcessed = function () {
    mythings_processed = {}; // Generated using mythings
    return mythings_processed;
  };

   <ul>
     <li ng-repeat="processed_thing in mythingsProcessed()">{{processed_thing.id}}</li>
   </ul>

しかし、私がやったとき、それは私にエラーを与えました:10 $digest() iterations reached. Aborting!

何か案は?

更新: サンプルデータ/ユースケース

ajax経由で取得したアイテムのリストがあります:

{
  items: [
    {name: 'pete', value: 1},
    {name: 'john', value: 2},
    {name: 'pete', value: 3},
    {name: 'steve', value: 2},
    {name: 'john', value: 1}
  ]
}

これらすべてを表示したいのですが、それらを次のように処理 (合計) したい:

{
  processed_items: [
    { name: 'pete', value: 4 }
    { name: 'john', value: 3 }
    { name: 'steve', value: 2 }
}

これらもリストに表示します。

4

2 に答える 2