На мой взгляд, я хочу отображать вычисляемое свойство несколько раз, если я делаю {{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>
В представлении вы можете видеть, что я вызываю {{ctrl.count()}}
четыре раза, а это означает, что вычисления происходят четыре раза. Как я могу выполнить вычисление только один раз и отобразить значение несколько раз?
Пожалуйста, не предлагайте такие идеи, как сделать массив частью контроллера, например ctrl.list
, а затем в представлении использовать {{ctrl.list.length}}
. Эта идея может быть для этого, например, но не будет работать там, где требуется сложное вычисление.
$scope.arraylength = ctrl.count()
и отобразите его как обычно. Затем вы можете вызвать функцию count() с помощью наблюдателя или определенных действий, в зависимости от вашего варианта использования... - person Karl Adler   schedule 21.09.2015computation is happening four times
Нет, я думаю, что это просто вызывает функцию 4 раза. Я думаю, чтоjs
не буду его вычислять. это свойство объекта массива, которое прототипически наследуется отArray
. поправьте меня, если я ошибаюсь :). developer.mozilla.org/en-US/ документы/Интернет/JavaScript/Справочник/ - person Kalhan.Toress   schedule 21.09.2015count ()
просто возвращает длину массива, но в реальном приложении я хочу выполнить сложные вычисления в этой функции. Если из представлений я вызываю функцию несколько раз, вычисления будут происходить несколько раз. - person Praveen Prasad   schedule 21.09.2015