私の見解では、計算されたプロパティを複数回表示したいのですが、複数回表示すると{{ctrl.Compute()}}
、計算関数が複数回呼び出されます。
このplunkrデモを作成して、質問を簡単にしました http://plnkr.co/edit/TcMcJUipLKk94dthnivU
コントローラ
app.controller('MainController',function(){
var ctrl= this;
var list = [];
ctrl.count = function(){
console.log('Invoked');
return list.length
}
ctrl.add = function(){
list.push(1)
}
});
意見
<body ng-controller="MainController as ctrl">
<button ng-click="ctrl.add()">Add</button>
<br>
List Size: {{ctrl.count()}} <br>
List Size: {{ctrl.count()}} <br>
List Size: {{ctrl.count()}} <br>
List Size: {{ctrl.count()}} <br>
</body>
ビューでは、4 回呼び出していることがわかります。これは、{{ctrl.count()}}
計算が 4 回行われていることを意味します。計算を 1 回だけ実行して、値を複数回表示するにはどうすればよいですか?
のようなアイデアを提案しないでください。ctrl.list
配列をコントローラーの一部にしてから、ビューで使用します{{ctrl.list.length}}
。このアイデアは、たとえば、複雑な計算が必要な場合には機能しません。