在AngularJS html模板中使用ES6箭头函数

时间:2017-09-17 19:44:20

标签: angularjs ecmascript-6 lodash

是否有可能直接在AngularJS html模板中使用ES6箭头功能?

<div ng-if="results.filter(e => e.ext == 'xml').length > 0">Text</div>

&#39;导致&#39;是一个带有&#39; ext&#39;的对象列表。作为财产。 到现在为止,我已经使用了lodash,它完美无缺:

<div ng-if="_.filter(results, { ext : 'xml' }).length > 0">Text</div>

但如果可能,将改为ES6 ......

有没有人体验过这个或一些提示或者更好的想法?

2 个答案:

答案 0 :(得分:1)

ng-if directive评估AngularJS Expression并且不允许函数声明。

来自文档:

  

AngularJS表达式与JavaScript表达式

     

AngularJS表达式就像JavaScript表达式,但有以下不同之处:

     
      
  • 无函数声明:即使在ng-init指令内,也无法在AngularJS表达式中声明函数。
  •   
     

如果您想运行更复杂的JavaScript代码,则应将其设为控制器方法,并从您的视图中调用该方法。如果您想自己eval() AngularJS表达式,请使用$eval() method

     

— AngularJS Developer Guide - Expressions

答案 1 :(得分:0)

不,正如georgeawg所说,你不能在表达式中声明所有功能(例如在&#39; ng-if&#39;内)。这部分是因为Angular旨在鼓励将任何业务逻辑放置在控制器中,以鼓励正确分离关注点。

Angular表达式仅限于相当基本的东西,如访问对象的属性或作用域上的值,以及基本格式,排序和过滤。任何业务逻辑定义都属于控制器。