在某些ng-repeat中添加过滤器

时间:2017-07-27 13:31:34

标签: javascript html angularjs

有一些HTML

 <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

3 个答案:

答案 0 :(得分:1)

通过调用控制器功能,您可以尝试这个

class Menue(models.Model):
    title = models.CharField(max_length=255)
        panels = [
            FieldPanel('title', classname="col12"),
        ]
def __str__(self):
    return self.title

class Wochen(models.Model):
    menu_1 = models.ForeignKey(Menue,
        null=True, blank=True, on_delete=models.PROTECT, 
        related_name="menu_1+")
    panels = [
        FieldPanel('menu_1', classname="col12"),
    ]
def __str__(self):
    return self.menu_1

控制器

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

答案 1 :(得分: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}}

答案 2 :(得分:-1)

在你重复的内部,你可以和ng-if一起使用条件。 你只需要测试ng-if == 'currency'是否在这种情况下显示带过滤器的行,如果不显示没有过滤器的行