如果AngularJS中至少有一个值为空,则会过滤多个值

时间:2015-09-16 15:36:09

标签: angularjs

我正在使用过滤器来评估几个字符串。如果它们都已定义,我想显示它们

  

string0 string1

否则,我想显示如下消息:

  

至少有一个字符串是空的

这里有我的过滤器

.filter('getStrsOrNoData', function () {
    return function (s0, s1) {
        if (s0 && s1 ) {
            return s0 + ' ' + last;
        } else {
            return 'at least one of the strings is empty';
        }
    };
})

以下是我在HTML中声明它的方式,传入2个参数:

<p>{{string1 + string2 | getStrsOrNoData : string1 : string2 }}</p>

我的问题是当s0 && s1为真时,显示的值为

  

string0string1 string0

我认为问题是string1 + string2,但我不知道如何在管道的左侧说明两个变量....

1 个答案:

答案 0 :(得分:1)

我不会这样做。相反,我会创建一个过滤器,它将一个字符串数组作为输入,而不是其他参数。如果它们全部被定义,过滤器将连接数组中的字符串,或者如果至少有一个是假的则会显示错误消息

用法示例:

{{ [string1, string2] | joinOrError }}

未经测试的代码:

.filter('joinOrError', function() {
    return function(array) {
        if (array.some(function(string) {
            return !string
        })) {
            return 'at least one of the strings is empty';
        }
        else {
            return array.join(' ');
        }
    };
});