AngularJS过滤“concat”几个数据?

时间:2018-03-27 11:49:16

标签: php html angularjs

我正在为使用angularJS,其中一列是特定的“id”,它来自

this.admin

将返回类似“12342703ABC”的值

很好,我也有搜索输入

 <tr ng-repeat="x in stock | filter:Filter">
 <td>{{x.ean}}{{x.date| date:'ddMM'}}{{x.brand| limitTo : 3 : begin}}</td>

当我使用它时,它将搜索每一列,但如果我在输入上写出特定的“id”(f.e 12342703ABC),我也需要它来过滤,这是没有发生的。

任何想法?

3 个答案:

答案 0 :(得分:0)

<tr ng-repeat="x in stock | filter:{id: Filter}">
 <td>{{x.ean}}{{x.date| date:'ddMM'}}{{x.brand| limitTo : 3 : begin}}</td>

参考enter image description here

答案 1 :(得分:0)

我能想到2个解决方案

1)创建一个名为id的新属性,其中包含

的结果
{x.ean}}{{x.date| date:'ddMM'}}{{x.brand| limitTo : 3 : begin}}
控制器中的

表达式,并将这些新创建的属性添加到列表中。如果您使用上述方法,您当前的过滤器将起作用。

   angular.forEach($scope.data, function(value, key){
     //{{x.ean}}{{x.date| date:'ddMM'}}{{x.brand| limitTo : 3 : begin}}
        var date = new Date(value.date);
        var day = date.getDate()
        var month = date.getMonth()+ 1;

        value.id = value.ean; 

        if(day < 10)
          value.id = value.id + "0"+ day;
        else
          value.id = value.id + day;

        if(month < 10)
          value.id = value.id + "0" + month;
        else
          value.id = value.id + month;

        value.id = value.id + value.brand.substring(0,3);
   });

2)创建自定义过滤器

   $scope.myCustomFilter = function(row){

        if($scope.Filter == undefined || $scope.Filter.length == 0){
          return true;
        }
        else{
                  var data = "";
        var date = new Date(row.date);
        var day = date.getDate()
        var month = date.getMonth()+ 1;

        data = data + row.ean; 

        if(day < 10)
          data = data + "0"+ day;
        else
          data = data + day;

        if(month < 10)
          data = data + "0" + month;
        else
          data = data + month;

        data = data + row.brand.substring(0,3);

     if(data.toLowerCase().indexOf($scope.Filter.toLowerCase()) >= 0)
        return true;
      else 
        return false;
        }
   }

<强> Demo

答案 2 :(得分:0)

首先,您应该ng-init x.specificId然后在HTML中使用它。 filter

也会考虑此字段

&#13;
&#13;
angular.module('app', []).controller('ctrl', function($scope) {
    $scope.begin = 0;
    $scope.stock = [    
      {ean:'1234', brand:'brand1', date: new Date()},
      {ean:'5678', brand:'brand2', date: new Date()},
      {ean:'9012', brand:'brand3', date: new Date()}
    ];
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app='app' ng-controller="ctrl">
  <input type='text' ng-model='Filter' />
  <ul ng-repeat="x in stock | filter : Filter" ng-init="x.specificId = x.ean + (x.date | date:'ddMM') + (x.brand | limitTo : 3 : begin)">
    <li>{{x.specificId}}</li>
  </ul>
</div>
&#13;
&#13;
&#13;