Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   ng-click не работает после $compile (https://javascript.ru/forum/angular/48198-ng-click-ne-rabotaet-posle-%24compile.html)

Provincial 24.06.2014 13:54

ng-click не работает после $compile
 
Добрый день.

Есть фильтр, по которому запрашивается список товаров в html виде, в коде есть ng-show и ng-click, после $compile ng-show отрабатывает, а ng-click ни как не реагирует на клик.
При этом при первичной загрузки страницы (до использования фильтра) все директивы отрабатывают без проблем, после обновления списка ng-click не работает(

кусок кода из контролера фильтра. (Здесь я отправляю get с параметрами фильтра и выкладываю полученный список товаров в соседний div, перед этим естественно $compile)

Код:

    $scope.getFiltered = function(selected){
 /*.... код по обработке фильтра ...*/

        $http.get('<здесь url>').success(function(data) {
            var items = angular.element(data);
            $compile(items)($scope);
            if($scope.model.navig.page == 1){
                angular.element('#catalog-list .items').html(items);
            }else{
                angular.element('#catalog-list .items').append(items);
            }
        });

ng-show срабатывает, а ng-click - нет(

кусок кода из контролера списка товаров

Код:

 
$scope.isSelected = function(id){
        if(typeof gShara.compareItems !== "undefined"){
            return (gShara.compareItems[id] == id);
        }else{
            return false;
        }
    }
    $scope.showAddCompare = function(id,action){
        $http.get('/ajax/compare.php?action='+action+"&id="+id).success(function(data) {
            angular.element(document.getElementById('ajax_block_compare')).html(data);
        });

isSelected - отвечает за отображение кнопки Добавить/Удалить в ng-show - он отрабатывает
showAddCompare - добавляет/удаляет элемент из списка (отправляет get и возвращает Html), вызывается в ng-click

В чём может быть проблема?

Provincial 30.06.2014 12:18

РЕШИЛ наконец-то проблему.

Сделал следующим образом....

каждому товару(#catalog-list .items .item) в списке (#catalog-list .items) повесил контролёр с дублирующими функционалом ng-click, таким образом контролеры были в возвращаемом Html коде, который проходил $compile перед его выводом, в результате все события срабатывали на ура! ура! ура!

Надеюсь кому-то сэкономил пару часов этим топиком)


Часовой пояс GMT +3, время: 21:24.