Есть ли какая-то причина, по которой вы выберете одну технику над другой?
var items = [{val:7},{val:3},{val:4},{val:1}];
Сначала: Ctrl и View
$scope.doSomething = function(val){
return val + 10;
};
<div ng-repeat="item in items">
{{ doSomething(item.val) }}
</div>
Второе: Ctrl и View
angular.forEach(items,function(item){
item.val = item.val + 10;
//item.valAlso = item.val + 10; Or in case you want to preserve model
});
<div ng-repeat="item in items">
{{ item.val }}
</div>
Я обычно предпочитаю второй метод (например, после HTTP-запроса), но мне интересно, если и почему именно один превосходит другой. Я знаю, что первый способ может в конечном итоге вызвать $scope.doSomething несколько раз в каждом цикле дайджеста (для каждого элемента в репитере), но я слышал, что этот аргумент не так сильно отличается от использования фильтра. Любые идеи?
Изменить: меня особенно интересует эффект от грязной проверки, цикла дайджеста, часовых поясов и т.д. Кроме того, сложность функции актуальна вообще (представьте себе гораздо более сложную функцию)?