Javascript 角度滤波器不';不打印空白
当我有这么简单的角度过滤器代码时:Javascript 角度滤波器不';不打印空白,javascript,angularjs,angular-filters,Javascript,Angularjs,Angular Filters,当我有这么简单的角度过滤器代码时: {{ 'result: ' + array | printArray }} 带过滤器: app.filter('printArray', [ function() { return function(array) { if (!angular.isArray(array)) { return array; } var result = ''; if (array.length &
{{ 'result: ' + array | printArray }}
带过滤器:
app.filter('printArray', [
function() {
return function(array) {
if (!angular.isArray(array)) {
return array;
}
var result = '';
if (array.length > 0) {
result = array[0];
for (var i = 1; i < array.length; i++) {
result += ', ' + array[i];
}
}
return result;
};
}
]);
我想这可以通过以下明显的代码来解决:
{{ 'result: ' }}{{ array | printArray }}
但我想知道为什么Angular的工作方式很奇怪
Plunker:在这个例子中,我使用了函数,并将字符串移动到大括号外:
result: {{ array | printArray }}
在本例中,我使用了函数,并将字符串移动到大括号外:
result: {{ array | printArray }}
结帐
{{'结果:'+(数组|打印数组)}
结帐
{{'结果:'+(数组|打印数组)}
我怀疑在表达式被传递到printArray
过滤器之前,'result:'+array
正在执行,并且正在触发!角度.isArray(数组)
过滤器中的路径。然后您看到的是Angular呈现的array.toString()
的默认Javascript实现。因为“result”+数组不是数组,而是字符串。执行console.log(数组类型)
在过滤器中,您会发现结果是string
而不是object
。操作顺序。。。而且解决方案比预期的简单得多,也更自然。我怀疑在表达式传递到printArray
过滤器并触发之前,'result:“+array
正在执行!角度.isArray(数组)
过滤器中的路径。然后您看到的是Angular呈现的array.toString()
的默认Javascript实现。因为“result”+数组不是数组,而是字符串。执行console.log(数组类型)
在过滤器中,您会发现结果是string
而不是object
。操作顺序。。。而且这个解决方案比预期的要简单得多,也更自然。我知道它一定有简单的解决方案:)我知道它一定有简单的解决方案:)谢谢。我很想把它放在一个花括号里,但这也是一个很好的解决方案。谢谢。我很想把它放在一个大括号里,但这也是一个很好的解决方案。
<body ng-controller="MainCtrl">
{{ 'result: ' + ( array | printArray ) }}
</body>