ng-click не работает с внешним JavaScript

#angularjs #ionic-framework #angularjs-ng-click #algolia

#angularjs #ionic-framework #angularjs-ng-click #algolia

Вопрос:

Я создаю проект ionic и пытаюсь интегрироваться с Algolia autocomplete.js . Мне удалось заставить систему поиска работать, однако я добавил ng-click в результаты поиска, и эта функция работает не так, как представлено в этом codepen, который я сделал в качестве примера ниже:

http://codepen.io/marcos_arata/pen/VKVOky

Внутри шаблона результата моего algolia:

 <a ng-click="add_name({{{ name }}})">
  

Функция, которая должна запускаться при нажатии:

 $scope.add_name = function(name) {
    alert('User added!');
    console.log(name);
}
  

Я попытался внедрить результаты внутри области видимости, но также не сработало:

 autocomplete('#search_name', { hint: false, debug: true, openOnFocus: true },[{
    source: index.ttAdapter({ hitsPerPage: 15 }),
    templates: {
        header: '',
        suggestion: function(hit) {

            $scope.hit = hit;

            return template.render(hit);

        }
    }
}]);
  

http://codepen.io/marcos_arata/pen/VKVOky

—- РЕШАЕМАЯ —-

Вместо того, чтобы создавать функцию ng-click внутри ваших шаблонов, вы можете обрабатывать нажатие события вашего поиска внутри вашей функции «автозаполнение: выбрано» и использовать результаты набора данных и предложения.

 .on('autocomplete:selected', function(event, suggestion, dataset) {

  $scope.name = suggestion.name;
  console.log($scope.name);
  ## create any functions with the suggestion and dataset results inside

});
  

Комментарии:

1. Вы можете сделать это следующим образом: <a ng-click=»add_name(имя)»>

2. привет @VijayMaheriya, тоже не работает. моя функция не работает, когда я нажимаю на результаты поиска, как вы можете проверить в моем codepen

3. щелчок проглатывается .on('autocomplete:selected' событием. Я не знаю, почему это или как это исправить, но я подумал, что, возможно, дополнительная информация может быть полезной.

4. angular и javascript оба не работают. потому что это остановка

Ответ №1:

РЕДАКТИРОВАНИЕ ОТВЕТА:

Вот codepen:

По-видимому, в предложении сохранено выбранное имя, поэтому вам не нужна дополнительная функция:

 .on('autocomplete:selected', function(event, suggestion, dataset) {

  $scope.name = suggestion.name;
  console.log($scope.name);
});
  

Комментарии:

1. Большое спасибо, все работает отлично! Единственная проблема заключается в том, что похоже, что «функция» выполняется 2 раза. Вы знаете почему?

2. Я попытаюсь открыть codepen и проверить его немного позже

3. кроме того, вы знаете, как я могу очистить ввод после выбора? Я пробовал с angular.element (document. querySelector(‘#search_location’)).html(«); но не сработал