[asp.net-mvc]$filter 角返回对象问题

发布时间: 2017/3/25 1:49:12
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在进行 angularjs 我有两个属性 ID 的 LocationList 和 Name.Id 是 1,11,13,14,15。

我想每精确匹配 ID 10.但问题是我得到更多比什么意思它不返回精确匹配 ID value.why 它已考虑 1,11,13,14 15 well.below 是我的 code.please 让我知道如何获取精确匹配值,使用筛选器的名称。

Name = $filter('filter')($scope.LocationList, { ID: 10});


<div ng:app="myApp">
    <div ng-controller="HelloCntl">
        <ul>
            <li > <span>{{itemxx[0].label}}</span>

            </li>
        </ul>
    </div>
</div>

angular.module('myApp', [])
    .controller('HelloCntl', [ '$scope', '$filter', function($scope, $filter) {
        $scope.items = [
            { ID: 8, label: 'item 8' }, 
            { ID: 9, label: 'item 9' }, 
            { ID: 13, label: 'item 13' } ,
            { ID: 10, label: 'item 10'}, 
            { ID: 1, label: 'item 1'}, 
            { ID: 11, label: 'item 11' }, 
            { ID: 12, label: 'item 12' } 
        ];

    $scope.itemxx = $filter('filter')($scope.items, { ID: 1 });
    //console.log(item10);
}]);

她项目 ID 不是 ordered.so,当我试图获取 ID 1 然后它的 Id 13 的归来值的值。

解决方法 1:

这应该工作︰

angular.module('myApp',[]).filter('ID', function(){
    return function(items, value){
        return items.filter(function(item) { return item.ID === value });
    };
});

这里是完整的 jsFiddle: http://jsfiddle.net/jochenvanwylick/0suogLpk/

使用方法︰

<li ng-repeat="item in items | ID: 10">
    <span>{{item.label}}</span>
</li>

编辑

你不需要写一个特殊的滤波器,事实证明,你可以只使用预置的筛选︰

<li ng-repeat="item in items | filter: {ID:10}">
    <span>{{item.label}}</span>
</li>

编辑 2

我误解了-你想要做这在控制器中,而且还有小渔 AngularJS 筛选器中。默认情况下它将对象属性值视为一个字符串,然后做 '包含' 像筛选操作。

如果你想精确匹配,你得利用筛选器函数的三参数 comparator 和供应 exactmatch 比较器︰

$filter('filter')($scope.items, { ID: 1 }, function(a,b) { return a === b; });

这将有效地做 1 === 1 比较和因而将返回 true 为此案和在任何其他错误。( http://jsfiddle.net/jochenvanwylick/0suogLpk/7/ )

赞助商