2017-07-27 87 views
0

有一些HTML在某些NG重複添加過濾器

<div ng-class="{mi_selected: value.selected}" ng-repeat="value in param.values" > 
      {{value.type == "text" || value.type == "relocate_here" || value.type =="relocatePage" || value.type=="reloadDashboard" ? value.name : ""}} 
</div> 

但我有一個更value.type='currency'。而如果是這樣我需要添加濾鏡| currency:'RUB '。 我該怎麼做,如果這個建設

{{value.type == "text" || value.type == "relocate_here" || value.type =="relocatePage" || value.type=="reloadDashboard" ? value.name : value.type=="currency" ? value.name | currency: 'EUR' :""}} 

不起作用。 HTML完全相同的樣子:

<div ng-class="{mi_selected: value.selected}" ng-repeat="value in param.values" ng-click="value.type=='relocate_here' ? dashboardCtrl.relocateHere(value.urlTo) : value.type=='relocatePage' ? dashboardCtrl.relocatePage(value.urlTo) : value.type=='reloadDashboard' ? dashboardCtrl.reloadDashboard(value.json,value.matrix) : ''"> 
      {{value.type == "text" || value.type == "relocate_here" || value.type =="relocatePage" || value.type=="reloadDashboard" ? value.name : ""}} 

      <input ng-if="value.type == 'input'" type="text" ng-value="value.selected" placeholder="{{value.name}}"> 
      <input ng-if="value.type == 'input_search'" name="value.model" ng-model="value.val" ng-controller="searchCtrl as searchCtrl" ng-change="searchCtrl.isEmptyQuery(param.values) ? searchCtrl.isEmptyObject(searchCtrl.template) ? searchCtrl.search(param.values, param.url) : searchCtrl.checkTemplate(param.values) ? searchCtrl.searchFilter(param.values) : searchCtrl.search(param.values, param.url) : searchCtrl.clean()" type="text" placeholder="{{value.name}}"> 
      <input ng-if="value.type == 'date_search'" type="date"> 
     </div> 

例如有value.name=1000。如果value.type=="text"我需要顯示1000。但如果value.type=="currency",我需要顯示EUR 1,000.00

+2

您應該閱讀三元運算符是如何工作的。 –

+1

@PhilippSander我明白這個問題在':'... – RoGGeR

+1

是的,因爲你使用它真的很奇怪... –

回答

1

行通過調用控制器功能,你可以試試這個

<div ng-class="{mi_selected: value.selected}" ng-repeat="value in param.values" >{{ showValue(value.type) }} 
</div> 

控制器

$scope.showValue = function(type){ 
    if(type=="currency"){ return $filter('currency')(type, 'RUB '); } return type; 
} 
+1

看起來像我所需要的,但它不工作) – RoGGeR

-1

在你的ng-repeat中,你可以使用和ng-if的條件。 你只需要測試,如果ng-if == 'currency'在這種情況下顯示與過濾行,如果不顯示不使用濾鏡

+0

因此,據我所知,像你說的那樣,我需要用'ng-if'指令在我的div中添加元素,但是我需要這樣做而不添加新元素 – RoGGeR

0

使用這樣的自定義過濾器嘗試:

var filterByType = function($filter) { 
    return function(data, type) { 
    if (type === 'text') { 
     return data; 
    } 
    if (type === 'currency') { 
     //change the data path to name 
     return $filter('currency')(data.amount, 'RUB'); 
    } 
    } 
}; 
{{ value | filterByType : value.type}}