首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达式中的AngularJs函数

表达式中的AngularJs函数
EN

Stack Overflow用户
提问于 2014-02-28 08:38:43
回答 1查看 14K关注 0票数 12

你有没有理由选择一种技术而不是另一种?

代码语言:javascript
复制
 var items = [{val:7},{val:3},{val:4},{val:1}];

第一步: Ctrl + View

代码语言:javascript
复制
 $scope.doSomething = function(val){
     return val + 10;
 };

 <div ng-repeat="item in items">
     {{ doSomething(item.val) }}
 </div>

第二步: Ctrl和View

代码语言:javascript
复制
 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 (对于中继器中的每个项目),但我听到了这样的说法:这与使用过滤器没有太大区别。有什么想法吗?

编辑:我最想知道的是对脏检查,摘要周期,范围监视等的影响。函数的复杂性也是相关的吗(想象一个更复杂的函数)?

EN

回答 1

Stack Overflow用户

发布于 2014-02-28 09:08:18

这两种方法都不会有性能差异,但就语义和清晰分离而言,没有理由使用第一种方法。这就是设计和优化过滤器的目的。

由于脏检查是以完全相同的方式进行的,因此函数的复杂性在不同的方法之间不会有差别。

如果你正在修改项目的值,那么你的逻辑绝对应该保持在你的视图之外,也就是第二个例子。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22083885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档