如何使用Jquery将click事件附加到AngularJS指令?

Ves*_*vic 1 javascript jquery angularjs angularjs-directive

我制作了AngularJS指令,我在我的主页上加载,我也有 JQuery文件,我alert('it works')<p> Click </p>单击元素时调用.这是一个例子.

/*
 * This is the directive
 */

outsource.directive('mydirective', function() {
    return {
        restrict: 'E',
        link: function(scope, element, attribute) {
            // Link
        },
        replace: true,
        templateUrl: 'src/app/components/views/directive.html'
    };
});
Run Code Online (Sandbox Code Playgroud)

directive.html文件

<p id="clicked"> Click </p>
Run Code Online (Sandbox Code Playgroud)

jquery函数

$(document).ready(function() {
    $("#clicked").click(function() {
        alert('it works');
    });
});
Run Code Online (Sandbox Code Playgroud)

对于我真正的问题,这只是一个简单的问题.我注意到angular指令的加载速度比触发警报消息的函数要慢.因为我的选择器没有选择任何东西$("#clicked").

*我应该如何使用jquery的angular指令?除了使用jqlite之外,解决这个jquery-angular问题的正确方法是什么?*

Tus*_*har 8

jQuery当你有AngularJS时不要使用.您可以使用ng-clickAngularJS绑定click元素上的事件.

HTML

<p ng-click="clickHandler()">...</p>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

在控制器中

$scope.clickHandler = function() {
    alert('clicked');
};
Run Code Online (Sandbox Code Playgroud)

编辑

你还想使用jQuery(不推荐):

$(document).on('click', "#clicked", function() {
    alert('it works');
});
Run Code Online (Sandbox Code Playgroud)

  • 好的,我知道如何使用ng-click.但是,如果我有20个元素,我必须触发警报消息呢?我怎样才能做到这一点?使用jquery我只需选择所有元素,并在其上附加事件. (2认同)