私は Angular を使い始めたばかりで、手動 re: スコープへのバインディングを使用できます。
プロパティを設定するデータを読み込もうとしています。次に、このプロパティに基づいて他のプロパティを更新したいのですが、これを簡単にトリガーする方法はありますか?
現時点では、私はちょうどやっています:
- JSON データを読み込む
- 設定
mythings
- のトリガー計算
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 }
}
これらもリストに表示します。