AngularJS - 将click事件绑定到元素

时间:2015-07-13 09:33:46

标签: javascript jquery angularjs

我将以下部分插入到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 个答案:

答案 0 :(得分:2)

将js中的指令名称更改为在view part:

中声明的指令名称的camelcased版本
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!");
                });
            });
        }
    };
});
相关问题