jQuery单击不与AngularJS一起使用的事件

Mar*_*y.H 2 javascript jquery angularjs

我正在将我的多重php + jquery网站转换为单页角应用程序.但是我已经用jquery编写了很多代码,所以只打算在路由等方面交换php for angular.

我遇到的一个问题是我无法弄清楚的是jquery点击事件我一直在用完,直到转换停止工作.如果我从控制台调用该函数,那么更改代码以使其从ng-click中触发它将起作用.jquery正在工作,我在提到的函数中放了一些jquery,它运行正常.

<!doctype html>
<html ng-app="myApp">
<head>
  <link href="css/header.css" rel="stylesheet">
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.js"></script>
  <script src="https://cdn.firebase.com/js/client/2.2.4/firebase.js"></script>
  <script src="https://cdn.firebase.com/libs/angularfire/0.9.2/angularfire.min.js"></script>
  <script type='text/javascript' src="js/jquery.min.js"></script>
  <script type='text/javascript' src='js/header.js'></script>
  <script type='text/javascript' src='main.js'></script>
</head>
<header-page></header-page>
Run Code Online (Sandbox Code Playgroud)

main.js:

var mainApp = angular.module('myApp', ['firebase', 'headerPage']);

mainApp.directive('headerPage', function(){
    return{
        restrict: 'E',
        templateUrl: 'html/header.html'
    }
});
Run Code Online (Sandbox Code Playgroud)

header.js

(function() {
    var app = angular.module('headerPage', ['firebase']);

    app.controller("headController", ['$http', '$firebase', '$scope', '$filter',
        function($http, $firebase, $scope, $filter) {
            //most of the code
        }
    ]);
})();

$("#myElement").on("click", function() {
    console.log("clicked");
});
Run Code Online (Sandbox Code Playgroud)

PSL*_*PSL 7

原因是,当您将事件绑定到元素时#myElement,元素尚不存在.由于该元素是作为指令模板的一部分呈现的,因此您需要在指令链接函数中移动绑定处理程序.好吧,你可以在技术上使用事件委托来解决问题,但这只是黑客的另一个黑客攻击.最好的选择是ng-click在元素上使用它(你已经说过你尝试过了).