加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS:在指令之外的按钮上侦听点击事件

发布时间:2020-12-17 17:40:42 所属栏目:安全 来源:网络整理
导读:我是 angularjs的新手.我正在建造一个angularjs SPA.应用程序页面有两个部分 – 按钮区域和应用程序区域.应用程序区域是我的视图加载的位置.每个视图的按钮区域是相同的,因此我不将它包含在视图模板中,而是将其保留在应用程序窗口中.我的问题是,我希望我加载
我是 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:

$apply() is used to execute an expression in angular from outside of
the angular framework. (For example from browser DOM events,
setTimeout,XHR or third party libraries). Because we are calling into
the angular framework we need to perform proper scope life cycle of
exception handling,executing watches.

例:

var onButtonClick = function () {
  scope.$apply(function () {
    // Do something
  });
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读