AngularJS:在指令之外的按钮上侦听点击事件
我是
angularjs的新手.我正在建造一个angularjs SPA.应用程序页面有两个部分 – 按钮区域和应用程序区域.应用程序区域是我的视图加载的位置.每个视图的按钮区域是相同的,因此我不将它包含在视图模板中,而是将其保留在应用程序窗口中.我的问题是,我希望我加载到应用程序区域的各种指令响应按钮区域中的点击.我如何收听源自指令之外的点击(或任何其他事件)?非常感谢!
解决方法
您只需要引用该按钮并为其附加事件处理程序.
例: app.directive('directiveName',function () { return { link: function (scope,element,attrs) { // Get a reference to the button DOM element var buttonDOMElement = document.querySelector('#button1'); // Wrap it as a jqLite element var button = angular.element(domElement); var onButtonClick = function () { // Do something }; button.on('click',onButtonClick); scope.$on('$destroy',function () { button.off('click',onButtonClick); }); } }; }); 演示:http://plnkr.co/edit/4XvPT8r9USWHnbdu1ZHX?p=preview 请注意,像这样附加的事件处理程序生活在“Angular之外”.这意味着如果您的处理程序更新了例如绑定到视图的作用域值,则需要明确告知Angular,否则在下一次触发摘要循环之前不会反映更改. 为此你可以使用$apply:
例: var onButtonClick = function () { scope.$apply(function () { // Do something }); }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |