首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular JS控制器检测第三方事件?

Angular JS控制器检测第三方事件?
EN

Stack Overflow用户
提问于 2016-02-18 03:06:26
回答 2查看 482关注 0票数 0

我有一个Angular 1.4.9应用程序。我使用的是第三方JS插件(Jasny Bootstrap)。它有一些似乎使用简单JQuery的JS组件。

他们的文档说这个插件会在关键点发出事件,比如"itemShown“。我想知道我是否可以在页面的控制器中检测到这一点并对其执行操作,如下所示:

"on itemShown function () {...“

EN

回答 2

Stack Overflow用户

发布于 2016-02-18 08:08:54

在AngularJS中处理自定义jQuery事件

下面的示例显示一个自定义指令,该指令检测自定义jQuery事件并调用由属性定义的函数。

代码语言:javascript
复制
app.directive("onBsShowOffcanvas", function($parse) {
    return function linkFn(scope, elem, attrs) {
        var fn = $parse(attrs.onBsShowOffCanvas);
        elem.on("show.bs.offcanvas", function(e) {
            fn.assign(scope, {$event: e});
            scope.$apply();
        });
    }
});

要在HTML中使用指令,请执行以下操作:

代码语言:javascript
复制
<div on-bs-show-offcanvas="offcanvasHandler($event)">

我建议将事件对象公开为$event,因为这是AngularJS事件指令的习惯。

$event

ngClickngFocus这样的指令在该表达式的作用域内公开了一个$event对象。当存在jQuery时,该对象是jQuery Event Object的实例,或者是类似的jqLite对象。

-- AngularJS Developer Guide -- $event

票数 0
EN

Stack Overflow用户

发布于 2016-02-18 18:44:06

如果你在你的应用中嵌入了jQuery (因为Angular默认嵌入的是jQlite,而不是jQuery),这里有一个解决方案。

在您的元素准备好之后,您可以从控制器完成此操作:

代码语言:javascript
复制
$element.ready(function () {
    $('#offcanvasId').on('hide.bs.offcanvas', function(){
        //...
    })
});

尽管如此,在没有jQuery的情况下必须有一些变通方法。

您可以在documentation https://docs.angularjs.org/api/ng/function/angular.element上查看更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35465498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档