私のサンプル コード (そこにあります) は 2 つの問題を引き起こします。
「renderthis」関数は、単にページをロードするときにアイテムごとに 2 回呼び出されます
主な問題 - ボタンをクリックすると、doit() 式を評価した後、ng-click がスコープで $apply を呼び出し、各アイテムの 2 つの DOM 要素が再レンダリングされると仮定します..今、私はここの各アイテムのスコープは、何らかの形で親スコープにバインドされているか、奇妙な分離やトランスクルージョンなど、まだ習得していないものによってそれに関連していることを理解してください.. ng-click で $digest のみを呼び出す方法はありますか?各アイテムの子スコープまたはこの種の何かで?
ここに私のコードがあります:
html:
<body ng-controller="MainCtrl">
<ul>
<li ng-repeat="item in items">
<div>
<span>{{item.title}}</span>
<span>{{renderthis()}}</span>
<span>{{item.number}}</span>
<button ng-click="doit()">CLIQUE!</button>
</div>
</li>
</ul>
</body>
JS:
var app = angular.module('angularjs-starter', []);
app.controller('MainCtrl', function($scope) {
$scope.doit = function(){
console.log('doing it for item with title --> ', this.item.title);
}
$scope.renderthis = function(){
console.log('rendering this for item with title -->', this.item.title);
return '|';
}
$scope.items = [{title: 'hello', number: 1}, {title: 'shalom', number: 42}];
});
または、この plnkr を参照してください。