@LeshaPistolet

Почему не работает ng-click при генерации html когда из jQuery функции?

for (var i = 0; i < categories.length; i++) {
                if (categories[i]=="Home") {
                    $("#categoryNav").append("<a class=\"btn btn-primary\"  ng-click=\"app.changeList('')\">" + categories[i] + "</a>");
                }
                else {
                    $("#categoryNav").append("<a class=\"btn btn-primary\"  ng-click=\"app.changeList('" + categories[i] + "')\">" + categories[i] + "</a>");
                }      
            }

Генерирует кнопки, каждая из которых вызывает метод в angularjs контроллере:
app.controller("ProductsController", function ($http) {
        var goga = this;
   goga.changeList = function (category) {
            $http.get('/api/DataService/' + category)
                 .success(function (results) {
                     goga.products = results;
                 });
        };
    });

Но при нажатии на кнопку ничего не происходит, т.е. вызов метода не осуществляется. Однако, если создать кнопку в ручную и задать параметр при вызове метода goga.changeList('Soccer'), то вызов происходит. Код кнопки написанной в ручную, и код сгенерированный функцией не отличаются. В чём проблема?

Пример кнопки, созданной в ручную:
<a class="btn btn-primary" ng-click="app.changeList('Soccer')">TEST</a>
  • Вопрос задан
  • 2593 просмотра
Решения вопроса 1
TekVanDo
@TekVanDo
Javascript Developer
Скорее всего проблема в не правильной последовательности выполнении скрипта, т.е. ангуляр инициализируется быстрее чем jquery сгенерит кнопки.
Вы явно используете angular неправильно, и кнопки нужно сиздавать средствами angular.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
baskerville42
@baskerville42
Учусь работать (Junior)
Вы noConflict() используете? А то по Ввашему коду так не скажешь. jQuery и angular не ладят между собой
Ответ написан
@FuzzyBases
В ангуларе есть такой провайдер как $compile. https://docs.angularjs.org/api/ng/service/$compile
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы