레몬블루
270
2015-10-06 17:03:36
4
4757

AngualrJS ng-repeat 필터 사용시 정확한 값만 필터링하기



  <div ng-repeat="post in posts | filter:number">post.numbers</div>

이런식으로 되어있을 때 number에 '1' 을 기입하면


1, 10 ,100

과 같은 1이 포함된 모든 게시물이 나오더군요.

정확하게 1만 필터링되게 하려면 어떻게 하나요?

0
  • 답변 4

  • cozyhyunny
    615
    2015-10-06 17:12:49

    http://stackoverflow.com/questions/14733136/ng-repeat-filter-by-single-field

    위 사이트 보면에서 참조할 만한 답변이 있네요


    app.controller('FooCtrl', function($scope) {
       $scope.products = [
           { id: 1, name: 'test', color: 'red' },
           { id: 2, name: 'bob', color: 'blue' }
           /*... etc... */
       ];
    });
    <div ng-repeat="product in products | filter: { color: 'red' }"> 
  • 레몬블루
    270
    2015-10-06 17:23:15

    답변 감사합니다. 프로젝트상에선 카테고리별로 필터링을 하고있는데요,

    위처럼 red 로 하면 color 내의 redBull, redFire 같은 단어도 같이 나오게 되더군요...

    저는 'red' 만 필터링하고싶은데 말이죠. 설명이 미흡했나봅니다

  • 푸르게
    558
    2015-10-06 17:47:28

    custom filter를 만들어 사용하면 됩니다.

    <div ng-repeat="post in posts | equal:number">post.numbers</div>


    app.filter('equal', function() {
        return function(posts, number) {
            if (!angular.isUndefined(posts) && !angular.isUndefined(number) && number.length > 0) {
                var tempPosts = [];
                angular.forEach(posts, function(post) {
                    if (angular.equals(post.number, number)) {
                        tempPosts.push(post);
                    }
                });
                return tempPosts;
            } else {
                return Posts;
            }
        };
    });

  • cozyhyunny
    615
    2015-10-06 17:51:59

    아 이미 답변 하셨네요 ㅎㅎ

  • 로그인을 하시면 답변 을 등록할 수 있습니다.