2014-09-24 169 views
3

我正在編寫一個自定義過濾器以用' - '替代零值以用於顯示目的。但是,如果它不是零,它應該返回輸入,但會過濾爲貨幣。當我嘗試時,我收到一個意外的令牌錯誤。AngularJS:將貨幣過濾器應用於自定義過濾器的返回值

angular.module('app') 
     .filter('displaynullcurrency', function(){ 
      return function(input){ 
       if(!input){ return ' - '; } 
       if(parseFloat(input) != 0){ 
        return {{input | currency}}; 
       } 
       return ' - '; 
      }; 
     }); 
+2

爲什麼您使用的是雙支架'{{}}'符號在那裏?你不能那樣做。 – matthewpavkov 2014-09-24 18:03:46

回答

5

當您嘗試使用$filter你必須使用這樣一個javascript函數內部:$filter('currency')(input),你用你的函數的語法保留給模板,試試這個:

angular.module('app') 
     .filter('displaynullcurrency', function($filter){ 
      return function(input){ 
       if(!input){ return ' - '; } 
       if(parseFloat(input) != 0){ 
        return $filter('currency')(input); 
       } 
       return ' - '; 
      }; 
     }); 
+0

@downvotter你能解釋倒票嗎?謝謝! – Josep 2014-09-24 18:26:47

+0

我知道有一個downvote,因爲我投了答案,但總數是0.但是,我想知道你是如何知道有一個downvote。 SO或某個地方是否有某個地方告訴你有降價?我只是想知道。儘管downvote,我讚賞你的迴應......謝謝! – jgravois 2014-09-24 18:50:56

+0

@jgravois通過兩種不同的方式讓我們知道它:1)首先我收到了一個通知,說我得到了加薪,後來當我來看看是否收到了您的反饋時,我看到我的回答有一個分數0. 2)一旦你達到1000的代表,你可以得到這個權利:http://stackoverflow.com/help/privileges/established-user它允許你看到任何分數的up-votes/down-votes問題或答案;) – Josep 2014-09-24 19:05:02

4

您正試圖在綁定語句中的指令中傳遞值。你只能在你的模板中做到這一點。

要返回由貨幣濾波的輸入值,你應該做這樣的事情:

angular.module('app') 
    .filter('displaynullcurrency', function($filter) { 
    return function (input) { 
     if (!input) { return ' - '; } 
     if (parseFloat(input) != 0) { 
     return $filter('currency')(input); 
     } 
     return ' - '; 
    }; 
    }); 
+0

是的,但我們並不真正知道OP想用它做什麼,所以我讓這個樣子,因爲它是更大的問題是令牌錯誤我想:) – 2014-09-24 18:16:45