추가 <및> 로그인 ng-repeat 및 그에 따라 필터링

카를로스

HTMl 페이지에 자전거에 대한 데이터가 있는데 '브랜드', '연도'및 가격과 같은 페이지에 필터가 있습니다. 브랜드 및 연도 필터가 잘 작동하지만 가격 필터에 문제가 있습니다.

그래서 저는 점점 더 작아야하고 조건부로 서명해야합니다. <다음에 가격 50000으로 서명하고> 500000 가격으로 표시해야합니다. 그리고 그에 따라 필터를 적용해야합니다.

http://jsfiddle.net/zL4x971f/

<div ng-app='app' class="filters_ct" ng-controller="MainCtrl as mainCtrl">
    <ul class="nav">
        <li ng-repeat="filter in filters" ng-class="{sel: $index == selected}">
            <span class="filters_ct_status"></span>
            {{filter.name}}

            <ul>
                <li ng-repeat="filterValue in filter.lists">
                  <input ng-checked="activeFilters.brand[filterValue] !== undefined" ng-click="toggleFilter(filter.name, filterValue)" type="checkbox">  {{filterValue}}
                </li>
            </ul>
        </li>
    </ul>

    <div ng-controller="ListCtrl as listCtrl">
        <div class="list" ng-repeat="list in lists | filter: activeFilters">
            {{list.brand}},
            {{list.year}} ,
            {{list.price}}
        </div>

        </div>

</div>

모난

var app = angular.module('app', []); 

    app.controller('MainCtrl', function($scope) {

        $scope.activeFilters = {

        };

        $scope.filters = [
                {
                    name: "brand",
                    lists: ['yamaha','ducati','KTM','honda']
                },
                {
                    name: "year",
                    lists: [2012,2014,2015]
                },{
                name:"price",
                lists:[50000,100000,20000,500000]
                }
            ];

        $scope.toggleFilter= function(filterName, filterValue) {

            if ($scope.activeFilters[filterName] === undefined) {

                $scope.activeFilters[filterName] = filterValue;
            } else {

                delete $scope.activeFilters[filterName];
            }
        };

    });


    app.controller('ListCtrl', function($scope) {

        $scope.lists = [
                {
                    "brand": "ducati",
                    'year': 2012,
                    'price':40000
                },
                {
                    'brand': "honda",
                    'year': 2014,
                    'price':50000
                },
                {
                    'brand': "yamaha",
                    'year': 2015,
                    'price':200000
                },
                {
                    'brand': "KTM",
                    'year': 2012,
                    'price':500000
                },
                 {
                    'brand': "KTM",
                    'year': 2015,
                    'price':800000
                }

            ];

    });
콴푸

이를 달성하는 가장 좋은 방법은 사용자 정의 필터를 작성하는 것입니다. 또한 사용자가 한 번에 하나만 선택할 수 있도록 가격 확인란을 업데이트해야합니다. 여기에서 볼 수 있습니다 : http://jsfiddle.net/so9x7qpy/

angular.module('app', [])
.controller('MainCtrl', function($scope) {
    $scope.activeFilters = {};
       
    $scope.filters = [
        {
            name: "brand",
            lists: ['yamaha','ducati','KTM','honda']
        },
        {
            name: "year",
            lists: [2012,2014,2015]
        },
        {
            name:"price",
            lists:['< 50000', '50000','100000','200000','500000', '> 500000']
        }
    ];

    $scope.toggleFilter= function(filterName, filterValue) {      	
        if (!$scope.activeFilters[filterName]) {        		        
            $scope.activeFilters[filterName] = [];
            return $scope.activeFilters[filterName].push(filterValue);  
        }
          
        var curFilter = $scope.activeFilters[filterName];
        var i = curFilter.indexOf(filterValue);
        if (i === -1) {
            curFilter.push(filterValue);
        } else {
            curFilter.splice(i, 1);
        }
        
        if (filterName === 'price' && curFilter.length > 1) {
        	curFilter.shift();        
        }
    };
})
.controller('ListCtrl', function($scope) {
    $scope.lists = [
        {
            "brand": "ducati",
            'year': 2012,
            'price':40000
        },
        {
            'brand': "honda",
            'year': 2014,
            'price':50000
        },
        {
            'brand': "yamaha",
            'year': 2015,
            'price':200000
        },
        {
            'brand': "KTM",
            'year': 2012,
            'price':500000
        },
        {
            'brand': "KTM",
            'year': 2015,
            'price':800000
        }

    ];
})
.filter('myFilter', function() {
    return function(data, filter) {
        var list = [];
        
    	for (var i = 0; i < data.length; i++) {
        	var item = data[i];
            
            if (filter.brand && 
                filter.brand.length > 0 && 
                filter.brand.indexOf(item.brand) === -1) 
                continue;
            
            if (filter.year &&
                filter.year.length > 0 && 
                filter.year.indexOf(item.year) === -1) 
                continue;
            
            if (filter.price && filter.price.length > 0) {
                var re = /<|>/;
                if (re.test(filter.price)) {
                    if (eval(item.price + filter.price)) {
                        list.push(item);
                    }
                } else {
                    if (eval(item.price == filter.price)) {
                        list.push(item);
                    }
                }
            } else {
            	list.push(item);
            }
        }
                
        return list;
    }
});
.sel {
    color:red
}
.nav > li {
    float:left;
    list-style:none;
    padding-right:20px
}
.subul {
    display:none
}
.sel ul {
    display:block;
    list-style:none;
    padding-left:0
}
.list {
    padding-top:30px;
    clear:both
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app' class="filters_ct" ng-controller="MainCtrl as mainCtrl">
    <ul class="nav">
        <li ng-repeat="filter in filters" ng-class="{sel: $index == selected}">
            <span class="filters_ct_status"></span>
            {{filter.name}}
            
            <ul>
                <li ng-repeat="filterValue in filter.lists">
                  <input ng-checked="activeFilters[filter.name] && activeFilters[filter.name].indexOf(filterValue) !== -1" ng-click="toggleFilter(filter.name, filterValue)" type="checkbox">  {{filterValue}}
                </li>
            </ul>
        </li>
    </ul>
    
    <div ng-controller="ListCtrl as listCtrl">
        <div class="list" ng-repeat="list in lists | myFilter: activeFilters">
            {{list.brand}},
            {{list.year}} ,
            {{list.price}}
        </div>
            
        </div>
    
</div>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CSV 필터링 및 PowerShell에서 새 태그 열 추가

분류에서Dev

순서 및 그룹화에 따라 열 추가

분류에서Dev

첫 글자에 따라 ng-repeat 필터링

분류에서Dev

그룹 날짜 데이터에 따라 ng-class 추가

분류에서Dev

데이터 프레임 라인에서 그룹화 / 필터링 및 계산

분류에서Dev

감지 된 ID 값에 따라 URL 확인 및 콘텐츠 필터링

분류에서Dev

MongoDb 집계 및 값에 따라 두 필드별로 그룹화

분류에서Dev

ng-repeat 및 각도의 기본 요소 배열 필터링

분류에서Dev

조건에 따라 R 데이터 테이블 그룹화 및 조건에 따라 개수 가져 오기

분류에서Dev

순위 및 조건에 따라 데이터 필터링

분류에서Dev

ng-repeat 내에서 json 목록 추가 및 삭제

분류에서Dev

Angular의 테이블, ngClass 및 ng-repeat로 클래스 추가

분류에서Dev

Java 8 사용 필터 조건에 따라 목록 및 그룹별로 필터링하고 개수와 함께 맵으로 변환하는 방법

분류에서Dev

Pandas로 그룹 필터링 및 계산

분류에서Dev

ng-click 버튼으로 필터링 및 필터링 해제

분류에서Dev

ggplot에 범례 추가-포인트 / 라인 및 세그먼트

분류에서Dev

위치 및 추가 데이터에 따라 선택

분류에서Dev

ng-repeat 필터 및 제목별로 반복

분류에서Dev

각도 js ng-repeat 및 필터로 만든 div 축소

분류에서Dev

ng-repeat의 조건에 따라 동적으로 angularjs 필터 선택

분류에서Dev

특정 ng-repeat에 필터 추가

분류에서Dev

angularJS ng-repeat 및 ng-model을 사용한 동적 다중 열 필터링

분류에서Dev

angularJS ng-repeat 및 ng-model을 사용한 동적 다중 열 필터링

분류에서Dev

필터 값에 따라 ng-animate 지시문을 조건부로 추가

분류에서Dev

Logstash의 grok을 사용하여 JSON 및 비 JSON 데이터가 혼합 된 로그 라인에서 필드를 추출 할 수 없습니다.

분류에서Dev

슬라이더에 ng-switch 및 ng-repeat 사용

분류에서Dev

.gitignore에 따른 PHP 필터링 파일 및 경로

분류에서Dev

Django 스타일링 로그인 양식 및 추가 범위 추가

분류에서Dev

라 라벨의 내장 인증 시스템의 "로그인"및 "등록"링크가 기존 페이지에 어떻게 추가됩니까?

Related 관련 기사

  1. 1

    CSV 필터링 및 PowerShell에서 새 태그 열 추가

  2. 2

    순서 및 그룹화에 따라 열 추가

  3. 3

    첫 글자에 따라 ng-repeat 필터링

  4. 4

    그룹 날짜 데이터에 따라 ng-class 추가

  5. 5

    데이터 프레임 라인에서 그룹화 / 필터링 및 계산

  6. 6

    감지 된 ID 값에 따라 URL 확인 및 콘텐츠 필터링

  7. 7

    MongoDb 집계 및 값에 따라 두 필드별로 그룹화

  8. 8

    ng-repeat 및 각도의 기본 요소 배열 필터링

  9. 9

    조건에 따라 R 데이터 테이블 그룹화 및 조건에 따라 개수 가져 오기

  10. 10

    순위 및 조건에 따라 데이터 필터링

  11. 11

    ng-repeat 내에서 json 목록 추가 및 삭제

  12. 12

    Angular의 테이블, ngClass 및 ng-repeat로 클래스 추가

  13. 13

    Java 8 사용 필터 조건에 따라 목록 및 그룹별로 필터링하고 개수와 함께 맵으로 변환하는 방법

  14. 14

    Pandas로 그룹 필터링 및 계산

  15. 15

    ng-click 버튼으로 필터링 및 필터링 해제

  16. 16

    ggplot에 범례 추가-포인트 / 라인 및 세그먼트

  17. 17

    위치 및 추가 데이터에 따라 선택

  18. 18

    ng-repeat 필터 및 제목별로 반복

  19. 19

    각도 js ng-repeat 및 필터로 만든 div 축소

  20. 20

    ng-repeat의 조건에 따라 동적으로 angularjs 필터 선택

  21. 21

    특정 ng-repeat에 필터 추가

  22. 22

    angularJS ng-repeat 및 ng-model을 사용한 동적 다중 열 필터링

  23. 23

    angularJS ng-repeat 및 ng-model을 사용한 동적 다중 열 필터링

  24. 24

    필터 값에 따라 ng-animate 지시문을 조건부로 추가

  25. 25

    Logstash의 grok을 사용하여 JSON 및 비 JSON 데이터가 혼합 된 로그 라인에서 필드를 추출 할 수 없습니다.

  26. 26

    슬라이더에 ng-switch 및 ng-repeat 사용

  27. 27

    .gitignore에 따른 PHP 필터링 파일 및 경로

  28. 28

    Django 스타일링 로그인 양식 및 추가 범위 추가

  29. 29

    라 라벨의 내장 인증 시스템의 "로그인"및 "등록"링크가 기존 페이지에 어떻게 추가됩니까?

뜨겁다태그

보관