如何在Angular

时间:2017-12-06 14:06:04

标签: angularjs filter

我试图显示一个对象的两个属性。为此,我使用另一个属性从数组中过滤。我在这里找到了一个解决方案,但它只适用于单个属性。

以下是示例代码

controller.js
$scope.people= [{name, last_name, code}, {name, last_name, code}];

view
<tr ng-repeat="item in transactions | filter:search">
  <td>{{(people| filter : {code:item.person_code}:true)[0].name}}</td>
</tr>

我希望不仅能够显示名称,还能够显示last_name。如果可能,请用逗号分隔。

现在它有效,但我只显示名称,而且我不知道如何显示多个属性。

这是否可能?

2 个答案:

答案 0 :(得分:1)

您应该将filter的结果存储到temp变量中,然后使用它来显示所需的属性:

<tr ng-repeat="item in transactions | filter : search">
    <td ng-init='temp = (people | filter : {code:item.person_code}:true)[0]'>
         {{temp.name}} {{temp.last_name}}
    </td>
</tr>

答案 1 :(得分:0)

请试一试。

数据:

protected function failedValidation(Validator $validator)
{
    $errors = $validator->errors();
        $response = new ResponseObject();

        $response->code = ResponseObject::BAD_REQUEST;
        $response->status = ResponseObject::FAILED;
        foreach ($errors as $item) {
            array_push($response->messages, $item);
        }

    throw new HttpResponseException(response()->json($response));
}

过滤器:

$scope.people= [{name:"SUN", last_name:"SS", code:"101"}, 
 {name:"MOON", last_name:"MM", code:"103"},{name:"ION", 
 last_name:"IO", code:"105"}];
$scope.transactions= [{person_code:"105"}, {person_code:"103"}];

HTML:

filter('pFilter',function(){
return function(input,trans) {
var result =[];
angular.forEach(trans,function(item){
angular.forEach(input,function(p){
if(p.code == item.person_code)
result.push(p);
});
});
return result;
}
})

希望如果数据很大并且您希望在表格中显示更多内容,则此功能可用。