我正在为表使用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),我也需要它来过滤,这是没有发生的。
任何想法?
答案 0 :(得分:0)
<tr ng-repeat="x in stock | filter:{id: Filter}">
<td>{{x.ean}}{{x.date| date:'ddMM'}}{{x.brand| limitTo : 3 : begin}}</td>
答案 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
:
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;