在我看來,我想要多次顯示計算屬性,如果我多次執行{{ctrl.Compute()}}
,則計算函數會被多次調用。如何在AngularJs視圖中多次顯示相同的計算值,只需調用一次計算函數
我創造了這個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>
考慮,Y你可以看到我四次調用{{ctrl.count()}}
,這意味着計算髮生了四次。我如何只做一次計算並多次顯示一個值。?
請不要建議一樣,想法使控制器的陣列部分像ctrl.list
,然後在視圖中使用{{ctrl.list.length}}
。這個想法可能適用於這種情況,但不需要複雜的計算。
將控制器'$ scope.arraylength = ctrl.count()'中的變量設置爲變量並像往常一樣顯示。然後,您可以使用監視器或特定操作調用count()函數,具體取決於您的用例... – abimelex
'計算正在發生四次'不,我認爲它只是調用函數4次。我認爲'js'不會去計算它。它是從'Array'原型繼承的數組對象的屬性。糾正我,如果我錯了:)。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length –
正如我所說的這個演示'計數()'是簡單的返回數組的長度,但在真正的應用程序我想在那個函數中執行一個複雜的計算。如果從視圖中我多次調用一個函數,計算會多次發生。 –