2

我有這樣的結構中的控制器在angularjs一個號碼:應用過濾器,如果值是使用angularJS

$scope.modelInfo = {"key1":value1, "key2": value2,.....}; 

在視圖:

<tr ng-repeat="(key,value) in modelInfo"> 
    <td width="60%">{{key}}</td> 
    <td>{{value}}</td> 
</tr> 

我需要如果typeof value是數,與打印值角度過濾器,類似於:

{{value | number : 4}} 

回答

2

它真的很煩人,你還沒有數據類型到您的屬性。它的設計不好,你有。我首先傾向於改變設計,使得特定的對象模式,以便您可以輕鬆地決定哪個對象正在保存哪個數據類型值。

儘管您可以通過創建自定義篩選器來檢查typeof值。

HTML

<tr ng-repeat="(key,value) in modelInfo"> 
    <td width="60%">{{key}}</td> 
    <td>{{value | myNumber: 4}}</td> 
</tr> 

代碼來執行此

app.filter('myNumber', function($filter){ 
    return function(input, precision){ 
    if(!input) return input; 
    if(typeof input === "number") 
     return $filter('number')(input, precision); 
    } 
}) 
2

您可以編寫自定義過濾器來實現此目的:

myApp.filter('myNumber', function($filter) { 
    return function(value, fractionSize) { 
     if (!angular.isNumber(value)) { 
      return value; 
     } 

     return $filter('number')(value, fractionSize); 
    } 
}); 

,然後使用它:

{{value | myNumber : 4}} 

見下文一個工作例如:

var app = angular.module("sa", []); 
 

 
app.controller("FooController", function($scope) { 
 
$scope.modelInfo = {"key1":'value1', "key2": 2.453434}; 
 
}); 
 

 
app.filter('myNumber', function($filter) { 
 
    return function(value, fractionSize) { 
 
    if (!angular.isNumber(value)) { 
 
     return value; 
 
    } 
 

 
    return $filter('number')(value, fractionSize); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="sa" ng-controller="FooController"> 
 
    <table> 
 
    <tr ng-repeat="(key,value) in modelInfo"> 
 
     <td width="60%">{{key}}</td> 
 
     <td>{{value | myNumber : 4}}</td> 
 
    </tr> 
 
    </table> 
 
</div>

+1

嘿嘿,你打敗了我22秒:) + 1 –

+0

不用擔心Pankaj。即使那麼你很棒:) –

+1

這裏沒有人是偉大的,但我仍處於學習階段。在這個世界有很多東西要學習:p感謝和歡呼:) –

1

一個方法是創建一箇中間過濾器,以測試你的價值類型:

app.filter('filterIfNumber', function ($filter) { 
    return function (item) { 
    if (angular.isNumber(item)) { 
     return $filter('number')(item); 
    } 
    return item; 
    }; 
}); 
相關問題