কাস্টম ফিল্টার ফাংশন সহ AngularJS একাধিক ফিল্টার


95

আমি কাস্টম ফিল্টার ফাংশন সহ একাধিক ফিল্টার + দিয়ে তালিকাটি ফিল্টার করার চেষ্টা করছি।

আসল ওয়ার্কিং জেসফিল্ড উদাহরণটি হ'ল http://jsfiddle.net/ed9A2/1/ তবে এখন আমি ফিল্টার হওয়ার বয়স পরিবর্তনের পদ্ধতিটি পরিবর্তন করতে চাই।

আমি একটি কাস্টম ফিল্টার যুক্ত করতে চাই যাতে বয়সটি দুটি ইনপুট মানের উপর ভিত্তি করে ফিল্টার করে যা মিনি_ইজ এবং সর্বোচ্চ_আজ , (বয়সের মধ্যে)।

ডক মধ্যে তদন্ত পরে। আমি একই রকম প্রশ্নযুক্ত লোকদের দেখতে পেয়েছি এবং একজন ব্যবহারকারী মার্ক রাজককের উত্তর http://docs.angularjs.org/api/ng.filter:filter#comment-648569667 দেখতে ভাল দেখাচ্ছে এবং তাদের কাজ করা উচিত। তবে আমার কোডগুলিতে এটি প্রয়োগ করতে আমার সমস্যা হচ্ছে যা মূলত মনে হয় কারণ আমার কাছে আরও একাধিক ফিল্টার রয়েছে।

আমি কৌনিক জেএসে খুব নতুন :(

আমার চেষ্টা করা এবং কাজ করা ফিডল এখানে নয় http://jsfiddle.net/ed9A2/20/

আমার কাজ করছে না এমন কোডগুলির একটি অনুলিপি এখানে রয়েছে

দেখুন

<div ng-app ng-controller="MainController">
<table class="fancyTable">
    <tr>
        <th>Player id</th>
        <th>Player name</th>
        <th>Age</th>
    </tr>
    <tr>
        <td><input ng-model="player_id" /></td>
        <td><input ng-model="player_name" /></td>
        <td>
            Min Age:<input ng-model="min_age" />
            Max Age:<input ng-model="max_age" />
        </td>
    </tr>
    <tr ng-repeat="player in players | filter:{id: player_id, name:player_name, age:ageFilter}">
        <td>{{player.id}}</td>
        <td>{{player.name}}</td>
        <td>{{player.age}}</td>
    </tr>
</table>

নিয়ামক

function MainController($scope) {

$scope.player_id = "";
$scope.player_name = "";
$scope.player_age = "";
$scope.min_age = 0;
$scope.max_age = 999999999;

$scope.ageFilter = function(player) {
    return ( player > $scope.min_age && player.age < $scope.max_age);
}

$scope.players = [
        {"name": "Rod Laver",
            "id": "rod",
            "date": "1938/8/9",
            "imageUrl": "img/rod-laver.gif",
            "age": 75},
        {"name": "Boris Becker", 
            "id": "borix",
            "date": "1967/11/22",
            "imageUrl": "img/boris-becker.gif",
            "age": 45},
        {"name": "John McEnroe",
            "id": "mcenroe",
            "date": "1959/2/16",
            "imageUrl": "img/john-mc-enroe.gif",
            "age": 54},
        {"name": "Rafa Nadal",
            "id": "nadal",
            "date": "1986/5/24",
            "imageUrl": "img/ndl.jpg",
            "age": 27}
    ]
}

উত্তর:


197

এটা চেষ্টা কর:

<tr ng-repeat="player in players | filter:{id: player_id, name:player_name} | filter:ageFilter">

$scope.ageFilter = function (player) {
    return (player.age > $scope.min_age && player.age < $scope.max_age);
}

8

আশা করি এই লিঙ্কে নীচের উত্তরগুলি সাহায্য করবে, একাধিক মান ফিল্টার

এবং উদাহরণ সহ একরকম ঝলক দেখুন

arrayOfObjectswithKeys | filterMultiple:{key1:['value1','value2','value3',...etc],key2:'value4',key3:[value5,value6,...etc]}

ফিডাল


এইটি সমস্ত ফলাফল প্রত্যাবর্তন করে যদি এটি তালিকায় অনুসন্ধান করা বৈশিষ্ট্যটি খুঁজে না পায়, আমি কীভাবে এই আচরণটি উল্টাতে এবং তালিকার মধ্যে মানটি না উপস্থিত থাকলে কোনও ফলাফল ফিরিয়ে দিতে পারি না?
জাকারিয়া বেলঘিটি

0

ফাইলটি দেখুন (এইচটিএমএল বা ইজেএস)

<div ng-repeat="item in vm.itemList  | filter: myFilter > </div>

এবং নিয়ামক ইন

$scope.myFilter = function(item) {
return (item.propertyA === 'value' || item.propertyA === 'value');
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.