Угловой поиск внутри-повтор не работает

0

Поэтому у меня есть небольшой фильтр для некоторых публикаций, и все это прекрасно работает, но я столкнулся с проблемой, которая является фильтрами Child Term, которые работают только тогда, когда я нажимал на нее родительский объект раньше. Это моя догадка, что это проблема с областью но я не знаю, как я могу это исправить, любая помощь будет очень оценена.

edit: используя угловые фильтры, я уже просто забыл опубликовать полный фрагмент

<div class="row">
    <div class="onefourth">
        <div class="linklist terms">
            <ul>
                <li ng-repeat="term in terms">
                    <div ng-class="{parent: term.parent == null, active: $first }" ng-show="term.parent==null">
                        <input type="radio" name="terms" id="label_{{$index}}" ng-value="{{term.ID}}" ng-model="$parent.search.terms.categoria_pub.ID">
                        <label for="label_{{$index}}">{{term.name}}</label> 

                    </div>
                    <ul>
                        <li ng-repeat="childTerm in terms">
                            <div ng-if="childTerm.parent.ID==term.ID">
                                <input type="radio" name="terms" id="label_{{$index}}" ng-value="{{childTerm.ID}}" ng-model="$parent.search.terms.categoria_pub.ID">
                                <label for="label_{{$index}}">{{childTerm.name}}</label> 

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

            </ul>
        </div>
    </div>
    <div class="threefourths">
        <div class="row">
            <div ng-repeat="file in files | filter:search:strict">
                <div class="publication">
                    <div class="onefourth">
                        <a ng-href="{{ file.custom_fields.jcf_link[0] }}" target="_blank">
                            <div class="imgholder">
                                <img ng-src="{{ file.featured_image.source }}" src="<?php echo get_template_directory_uri(); ?>/img/placeholder_pub.jpg">
                            </div>
                        </a>
                    </div>
                    <div class="threefourths">
                        <h4>{{file.title}}</h4>
                        <div class="content" ng-bind-html="file.content | safeHtml">

                        </div>
                        <br>
                        <a ng-href="{{ file.custom_fields.jcf_link[0] }}" class="title" target="_blank">Descargar Publicación</a>
                    </div>
                </div>
            </div>
        </div>
    </div>

изменение: некоторые примеры данных

[
    {
        "ID": 19,
        "name": "Libros, Monografías y notas técnicas",
        "slug": "libros-monografias-notas",
        "description": "",
        "taxonomy": "categoria_pub",
        "parent": {
            "ID": 4,
            "name": "Documentos ",
            "slug": "documentos-",
            "description": "",
            "taxonomy": "categoria_pub",
            "parent": null,
            "count": 9,
            "link": "http://www.example.com/categoria_pub/documentos-/",
            "meta": {
                "links": {
                    "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                    "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/4"
                }
            }
        },
        "count": 5,
        "link": "http://www.example.com/categoria_pub/libros-monografias-notas/",
        "meta": {
            "links": {
                "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/19"
            }
        },
        "$$hashKey": "object:23"
    },
    {
        "ID": 30,
        "name": "Todo",
        "slug": "todo",
        "description": "",
        "taxonomy": "categoria_pub",
        "parent": null,
        "count": 10,
        "link": "http://www.example.com/categoria_pub/todo/",
        "meta": {
            "links": {
                "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/30"
            }
        },
        "$$hashKey": "object:24"
    },
    {
        "ID": 4,
        "name": "Documentos ",
        "slug": "documentos-",
        "description": "",
        "taxonomy": "categoria_pub",
        "parent": null,
        "count": 9,
        "link": "http://www.example.com/categoria_pub/documentos-/",
        "meta": {
            "links": {
                "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/4"
            }
        },
        "$$hashKey": "object:25"
    },
    {
        "ID": 17,
        "name": "Breves, Informes de opinión",
        "slug": "breves",
        "description": "",
        "taxonomy": "categoria_pub",
        "parent": {
            "ID": 4,
            "name": "Documentos ",
            "slug": "documentos-",
            "description": "",
            "taxonomy": "categoria_pub",
            "parent": null,
            "count": 9,
            "link": "http://www.example.com/categoria_pub/documentos-/",
            "meta": {
                "links": {
                    "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                    "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/4"
                }
            }
        },
        "count": 5,
        "link": "http://www.example.com/categoria_pub/breves/",
        "meta": {
            "links": {
                "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/17"
            }
        },
        "$$hashKey": "object:26"
    },
    {
        "ID": 20,
        "name": "Artículos recomendados",
        "slug": "articulos-recomendados",
        "description": "",
        "taxonomy": "categoria_pub",
        "parent": null,
        "count": 0,
        "link": "http://www.example.com/categoria_pub/articulos-recomendados/",
        "meta": {
            "links": {
                "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/20"
            }
        },
        "$$hashKey": "object:27"
    },
    {
        "ID": 15,
        "name": "Transcripciones webinars",
        "slug": "transcripciones-webinars",
        "description": "",
        "taxonomy": "categoria_pub",
        "parent": {
            "ID": 4,
            "name": "Documentos ",
            "slug": "documentos-",
            "description": "",
            "taxonomy": "categoria_pub",
            "parent": null,
            "count": 9,
            "link": "http://www.example.com/categoria_pub/documentos-/",
            "meta": {
                "links": {
                    "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                    "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/4"
                }
            }
        },
        "count": 0,
        "link": "http://www.example.com/categoria_pub/transcripciones-webinars/",
        "meta": {
            "links": {
                "collection": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms",
                "self": "http://www.example.com/wp-json/taxonomies/categoria_pub/terms/15"
            }
        },
        "$$hashKey": "object:28"
    }
]

edit: jsfiddle жаль, что так долго

https://jsfiddle.net/785p43cb/22/

Теги:
angular-ng-if
ng-repeat

2 ответа

2
Лучший ответ

Я разветкил твою скрипку и обновил ее. Вот:

https://jsfiddle.net/ignaciovillaverde/5g6weppn/4/

Он работает немного по-другому. Прежде всего, я удалил strict компаратор в file in files | filter:search file in files | filter:search, вы не использовали его. Я также разделил ваши фильтры двумя разными способами: один с использованием ввода текста и другими с помощью переключателей. Для переключателей я использовал ng-show="hasSelectedCategory(file.terms.categoria_pub) || !selectedCategory".

Также обратите внимание, что для директивы ng-model в переключателях мне нужно было использовать ng-model="$parent.selectedCategory" и ng-model="$parent.$parent.selectedCategory".

Я также включил функцию для запроса, имеет ли файл выбранную категорию. Взгляните на это.

Надеюсь, поможет!

  • 0
    Вы, сэр, мой герой
0

Как насчет использования filters AngularJS?

https://docs.angularjs.org/api/ng/filter/filter

Ниже приведен пример пользовательского фильтра:

http://jsfiddle.net/hm8qD/3/

Пожалуйста, учтите, что вы должны изменить customFilter для решения ваших задач.

  • 0
    Я использую фильтры AngularJS, извините за то, что не уточнил, выше вы найдете обновленный код, включая часть с фильтром
  • 0
    Не могли бы вы предоставить jsfiddle для более простого воспроизведения ошибки?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню