0
说,我有一个数组[null, 'foo', 'bar']
,我想对其进行过滤,以去除空值,并加入到一个字符串,像这样:角度表达解析错误试图筛选数组
[null, 'foo', 'bar'].filter(function(el) { return el !== null; }).join(', ')
如果我写这段代码在一个控制器和它的一切工作正常,没有错误。但是,如果我写在我看来,像大括号的角度表达:
<p>{{ [null, 'foo', 'bar'].filter(function(el) { return el !== null; }).join(', ') }}</p>
角吐出解析错误:
Syntax Error: Token '{' is unexpected, expecting [)] at column 42 of the expression [[null, 'foo', 'bar'].filter(function(el) { return el !== null; }).join(', ')] starting at [{ return el !== null; }).join(', ')].
在我的项目,该控制器具有影响这个最终的字符串很多变数,他们在许多功能上发生变化。当然,我可以写一个函数,最后一个字符串写入控制器变量,说,vm.finalString
,就像这样:
vm.updateFinalString = function() {
vm.finalString = [vm.var1, vm.var2, ...].filter(function(el) { return el !== null; }).join(', ');
}
,并注入该功能为每次改变之后发生改变这些变量函数,呼应vm.finalString
在我看来,大括号,但它似乎很多代码复制。它是角度的“特征”还是我错过了某些东西?谢谢。
模板中不能有这样的逻辑,这很好:模板必须干净而简单。 – dfsq
@dfsq,好吧,我明白了,表达式的角度文档禁止函数声明。好像我必须在一个有很多代码重复的控制器中编写这个逻辑,但是,嘿,应该有一些编程例程:) –
你不必重复代码,有很多方法可以避免这种情况。服务,mixin,甚至控制器继承。 – dfsq