2016-12-12 29 views
0

是否可以修飾angular number filter,如果它不是數字,則返回未修改的輸入?angular:'maybe'數字格式化程序

<my-tag input-value="{{foo() | number: 2}}"></my-tag> 

foo()會返回1.2345,值應顯示1.23,但是當它返回「ABCD」,它將返回這一點:「ABCD」。

+0

乍一看,我以爲你是對的。這將解決我目前的問題。不過,我希望它可以重複使用'date'過濾器,'currency'過濾器等等,而不需要N個具有相同裝飾代碼的實例。 – xtofl

+0

我做了一個基於'ng-if'的小提琴,但是你的問題在我發佈我的答案之前就被鎖定了......你可以[在這裏檢查](https://jsfiddle.net/Mistalis/Lwhg1fuv/)。 – Mistalis

回答

0

如果你想用number過濾器,你可以建立一個裝飾用@An​​kh鏈接的建議,即對庫存:

app.config(['$provide', function($provide) { 
    $provide.decorator('numberFilter', ['$delegate', function($delegate) { 
    var srcFilter = $delegate; 

    var extendsFilter = function() { 
     // Put the logic you want here: 
     let val = arguments[0]; 
     if (angular.isNumber(val)) { 
     return srcFilter.apply(this, arguments); 
     } 
     else if (angular.isString(val)) { 
     return val; 
     } 
     else { 
     // Or throw an error 
     return JSON.stringify(val); 
     } 
    } 

    return extendsFilter; 
    }]) 
}]); 

看到這個plunker