是否有可能直接在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 ......
有没有人体验过这个或一些提示或者更好的想法?
答案 0 :(得分:1)
ng-if directive评估AngularJS Expression并且不允许函数声明。
来自文档:
AngularJS表达式与JavaScript表达式
AngularJS表达式就像JavaScript表达式,但有以下不同之处:
- 无函数声明:即使在
ng-init
指令内,也无法在AngularJS表达式中声明函数。如果您想运行更复杂的JavaScript代码,则应将其设为控制器方法,并从您的视图中调用该方法。如果您想自己
eval()
AngularJS表达式,请使用$eval()
method。
答案 1 :(得分:0)
不,正如georgeawg所说,你不能在表达式中声明所有功能(例如在&#39; ng-if&#39;内)。这部分是因为Angular旨在鼓励将任何业务逻辑放置在控制器中,以鼓励正确分离关注点。
Angular表达式仅限于相当基本的东西,如访问对象的属性或作用域上的值,以及基本格式,排序和过滤。任何业务逻辑定义都属于控制器。