Событие ng-click на datalist не работает - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь выполнить автоматический поиск и при выборе продукта. Мне нужно перенаправить на URL продукта, связанный с выбранным раскрывающимся списком.Я могу получить все результаты поиска.

Я создал список данных для всего списка поиска и создал событие ng-click в списке данных, чтобы отправить выбранные данные контроллеру.Но ng-click не работает в datalist.Можете ли вы помочь мне

for.eg.в (key,data). мне нужно показать data в поле поиска переднего конца., но при выборе этих данных из списка данных. мне нужно отправить соответствующий key в контроллер

проблемный раздел для вашегоссылка (полный код в plunker):

<h2>Custom search field</h2>
            <div id="custom-search-input">
                <div class="input-group col-md-12">
                    <input type="text" class="form-control input-lg"  list="suggestions" placeholder="search" ng-model="obj.searchText" ng-focus="searchSuggest()" />
                    <span class="input-group-btn">
                        <button class="btn btn-info btn-lg" type="button" ng-click="showProduct(obj)">
                            <i class="glyphicon glyphicon-search"></i>
                        </button>
                    </span>
                </div>
            </div>
            <div>
                <datalist id="suggestions">
                    <p ng-repeat="values in suggestionResults track by $index"><option ng-repeat="(key,data) in values" value="{{data}}"  ng-model="selectedProduct" ng-click="showProduct({key: key, data: data})"></p>
                </datalist>

            </div>

Здесь, в приведенном выше коде., вы можете увидеть ключ и данные .Мне нужно просто показать значение данных, но при выборе одного варианта. Мне нужно отправить соответствующую ссылку URL на контроллер.Создан список данных в ng-repeat

Пожалуйста, выберите значение из выпадающего списка в текстовом поле из ссылки на плункер ниже

*

Я обновил plunker, чтобы URL также можно было видеть в выпадающем списке поиска. Мне нужно коротко передать этот URL контроллеру.Пожалуйста, помогите мне, как этого добиться

*

код здесь

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

удалите ваш ng-click = "showProduct (obj)" и добавьте его в

<p ng-repeat="values in suggestionResults track by $index">
    <option ng-repeat="(key,data) in values" value="{{data}}" ng-click="showProduct({key: key, data: data})">
    {{key}}
</p>

в showProduct

$scope.showProduct = function(data){
    console.log(data.key, data.data);
}

data.key - ваш URL перенаправления

0 голосов
/ 15 мая 2018

Если вы ищете в массиве объектов, используйте findIndex Метод.

   let json_array = [{a:'apple',b:'orange'},{a:'banana',b:'carot'}];
   let position  = json_array.findIndex(key=>key.a == 'banana');
   let its_value = json_array[position].a;

В противном случае вам потребуется поиск значения объекта, ниже приведен пример для этого.

 function find_by_key(obj,target) {

        let c = -1;
        let find_pos = c;
        loop1:
        for(let i in obj){
            c++;
            loop2:
            for(let g in target){
                if(g == i && target[g] == obj[i]){
                    find_pos = c;
                    break loop1;
                }
            }
        }
        return find_pos;
    }
    let obj = {a:'Apple',b:'Orange'};

    let find = find_by_key(obj,{a:'Apple'});
...