AngularJs ng-click не работает директива

Когда я нажимаю на свой HTML-img, ng-click не работает. Я не понимаю, почему. Эта ошибка возникает в masonryPictureView.html.

Главная страница – home.html

<ng-masonry>
  <ng-picture ng-items="projectdescription.pictures"></ng-picture>
</ng-masonry>

Шаблон директивы ngPicture - masonryPictureView.html

<ul class="grille">
 <li ng-repeat="item in ngItems">
  <img ng-click="test()" src="{{item.img}}"/>      <------ NG-CLICK
 </li>
</ul>

Директива в home.html

app.directive('ngMasonry', [function () {
    return {
        restrict: 'E',
        scope: {},
        transclude: true,
        templateUrl: "shared/masonry/masonryView.html",
        controller: function ($scope) {
            xxxxxxxxx......
        },
    }
}])

app.directive('ngPicture', ['$modal', '$log', function ($modal, $log) {
    return {
        require: "^ngMasonry",
        restrict: 'E',
        scope: {
            ngItems: '=ngItems'
        },
        templateUrl: "shared/masonry/masonryPictureView.html",
        link: function (scope, element, attrs, ngMasonryCtrl) {
            ngMasonryCtrl.setPictures(scope.ngItems);
        },
        controller: function ($scope) {
            $scope.test = function () < -- -- - function call in NG - CLICK {
                console.log("toto");
            }
        }
    }
}])

person Negrier Aurelien    schedule 23.05.2015    source источник
comment
Вы должны использовать якорь с ngclick и вместо этого обернуть свое изображение.   -  person Wayne Ellery    schedule 23.05.2015
comment
этот пост SO может быть полезен: директива   -  person Shehryar Abbasi    schedule 23.05.2015
comment
эй, быстрые вопросы, есть ли какие-либо ошибки в консоли? во-вторых, эта дополнительная запятая }, в конце first directive's controller: не вызывает никаких проблем, верно? в-третьих, можете ли вы проверить, достигает ли он функции second directive's controller:, поместив console.log чуть выше $scope.test, наконец, нужно ли вам restrict: EA для second directive?   -  person Shehryar Abbasi    schedule 23.05.2015
comment
Нет, у меня какая-то ошибка. Для дополнительной запятой } это я, я забыл удалить ее, когда отправил свой код в stackOverflow. В моем коде у меня есть ссылка ниже. Когда я помещаю console.log выше $scope.test, это работает   -  person Negrier Aurelien    schedule 23.05.2015


Ответы (1)


Откуда берется «projectdescription.pictures»? Это массив? Может он пустой? Посмотрите в консоли ошибки. Я рекомендую вам использовать ваше пространство имен вместо ng для ваших пользовательских директив или атрибутов. Я сделал plunker, демонстрирующий, что каждый раз при нажатии на изображение запускается тестовый метод.

Возможно, вы пропустили заполнитель ng-transclude в директиве ngMasonry?

 template: '<div class="masonry"><ng-transclude></ng-transclude></div>',
person Raulucco    schedule 23.05.2015
comment
описание проекта - это мой контроллер. Он не пустой, эта часть кода работает без проблем. Моя проблема в моей второй директиве, мой контроллер вызывается, но область пуста и не содержит функцию scope.test - person Negrier Aurelien; 23.05.2015
comment
Посмотрите на плунжер, который я создал. функция тестирования срабатывает при нажатии на изображение - person Raulucco; 23.05.2015
comment
на вашем плункере ссылка на ваше изображение недействительна. И даже если я изменю URL-адрес исходного изображения и нажму на изображение, ничего не произойдет plnkr .co/edit/EGcWke3v33sVFORURB4o?p=preview - person Negrier Aurelien; 23.05.2015
comment
Я думал, ты хочешь запустить тестовую функцию. Как вы сказали, ngclick не работает - person Raulucco; 23.05.2015
comment
Да, я хочу запускать тестовую функцию, когда я нажимаю на изображение - person Negrier Aurelien; 23.05.2015
comment
в вашем примере у вас есть console.log внутри тестовой функции. Если вы нажмете на одно изображение с открытой консолью, вы увидите сообщение, поэтому срабатывает тестовая функция. - person Raulucco; 23.05.2015
comment
Я нашел проблему! ... Это потому, что в моем css у меня есть z-index:-2, и поэтому ng-click не работает - person Negrier Aurelien; 23.05.2015