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

时间:2015-06-02 07:15:41

标签: 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'
    };
});

directive.html文件

<p id="clicked"> Click </p>

jquery函数

$(document).ready(function() {
    $("#clicked").click(function() {
        alert('it works');
    });
});

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

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

2 个答案:

答案 0 :(得分:8)

拥有AngularJS时请勿使用jQuery。 您可以使用ng-click AngularJS绑定元素上的click事件。

<强> HTML

<p ng-click="clickHandler()">...</p>

<强>的JavaScript

在控制器中

$scope.clickHandler = function() {
    alert('clicked');
};

修改

您仍想使用jQuery不推荐):

$(document).on('click', "#clicked", function() {
    alert('it works');
});

答案 1 :(得分:0)

您可以使用角度ng-click。请参阅 docs

  

ngClick指令允许您指定自定义行为   单击元素。

那你为什么要使用jQuery呢? AngularJs提供了处理指令事件的最佳方法,使用它们。