AngularJS - привязать событие клика к элементу

0

У меня есть следующее частичное вставка в ng-view. Я только вставляю часть частичного, что имеет значение.

<tr ng-repeat="group in groups">
    <td><a href="" class="restaurant-group-edit" create-link>{{ group.name }}</a></td>
    <td>{{ group.members.length }}</td>
    <td>{{ 5 }}</td>
    <td style="text-align: right">
    <span class="pseudo-select enhanced-select ps-settings">
        <select class="enhanced-select ps-settings restaurant-group-select" restaurant_group_id="1">
            <option value="actions">Actions</option>
            <option value="edit">Edit</option>
            <option value="edit">Restaurants</option>
            <option value="delete">Menus</option>
            <option value="edit">Delete</option>
        </select>
        <span class="es-label">Actions</span>
        <span class="icon"></span>
    </span>
    </td>
</tr>

Я хотел бы связать событие click с каждым из элементов привязки выше. Я пробовал это с помощью специальной директивы с именем create-link. В моем файле app.js у меня есть следующий код.

adminApp.directive("create-link", function($location, $timeout, $rootScope) {
    console.log("I fired the directive!");
    return {
        restrict: "A",
        link: function(scope, element) {
            $timeout(function(){
                element.on("click", function(e) {
                    console.log("Clicked!");
                });
            });
        }
    };
});

Однако событие никогда не связано. Фактически, "я уволил директиву!" никогда не записывается на консоль. Что мне здесь не хватает? Связывание событий с элементами DOM, создаваемыми при загрузке представления, представляется обычным прецедентом. Конечно, есть простой способ сделать это.

Спасибо за любую помощь.

Андрей

1 ответ

2
Лучший ответ

Измените имя директивы в js на версию версии вашего названия директивы, указанной в виде:

adminApp.directive("createLink", function($location, $timeout, $rootScope) {
    console.log("I fired the directive!");
    return {
        restrict: "A",
        link: function(scope, element) {
            $timeout(function(){
                element.on("click", function(e) {
                    console.log("Clicked!");
                });
            });
        }
    };
});
  • 0
    Спасибо! Это мелочи, которые получают вас. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню