2015-09-16 37 views
0

我正在使用過濾器來評估幾個字符串。如果兩者的定義,我想顯示他們AngularJS過濾多個值,如果其中至少有一個是空的

string0字符串1

一樣,我要顯示這樣一條消息:

至少其中一個字符串是空

在這裏有我的過濾器

.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

我不會這樣做。相反,我會創建一個將字符串數組作爲輸入的過濾器,而不需要其他參數。該過濾器將加入字符串數組中,如果他們所有定義,或者如果至少一個是falsy

使用例將顯示一個錯誤消息:

{{ [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(' '); 
     } 
    }; 
}); 
+0

是啊!聽起來不錯! – floatingpurr

+0

任何想法爲什麼我的過濾器作爲輸入's0 ='string0string1''和's1 ='string1'',從一個獨特的連接字符串開始? – floatingpurr

+1

過濾器的第一個參數始終是其輸入:「|」符號之前的值。以下參數是過濾器名稱後面的內容,用':'分隔。 –

相關問題