Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular JS控制器是否检测到第三方事件?_Javascript_Jquery_Angularjs_Twitter Bootstrap_Jasny Bootstrap - Fatal编程技术网

Javascript Angular JS控制器是否检测到第三方事件?

Javascript Angular JS控制器是否检测到第三方事件?,javascript,jquery,angularjs,twitter-bootstrap,jasny-bootstrap,Javascript,Jquery,Angularjs,Twitter Bootstrap,Jasny Bootstrap,我有一个有角度的1.4.9应用程序。我使用的是第三方JS插件(Jasny Bootstrap)。它有一些JS组件,似乎使用简单的JQuery 他们的文档说插件在关键点发出事件,比如“ItemShowed”。我想知道我是否可以在我的页面控制器中检测到这一点并对其进行操作,如: “on itemshowed function(){…”在AngularJS中处理自定义jQuery事件 下面的示例显示了一个自定义指令,该指令检测自定义jQuery事件并调用由属性定义的函数 app.directive("

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

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

“on itemshowed function(){…”

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

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中使用该指令,请执行以下操作:

<div on-bs-show-offcanvas="offcanvasHandler($event)">

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

$event 类似于
ngClick
ngFocus
的指令公开该表达式范围内的
$event
对象。该对象是存在jQuery时的实例或类似的jqLite对象


--

如果在应用程序中嵌入jQuery(因为Angular默认嵌入jQlite,而不是jQuery),那么这里有一个解决方案

在元素准备就绪后,可以从控制器执行此操作:

$element.ready(function () {
    $('#offcanvasId').on('hide.bs.offcanvas', function(){
        //...
    })
});
尽管如此,在没有jQuery的情况下必须有一些变通方法


您可以在文档中看到更多信息

您是否考虑将其添加到指令中而不是控制器中?如果您提供一个或显示您的问题,您的问题可能会得到更多关注。在其中一个站点上重新创建设置太难了。我通常会这样做,但这涉及到几个外部库等。谢谢。因为我我在使用Bootstrap 3.35,我也在使用jQuery。我会试试这个。我的代码会放在那个指令的什么地方,例如
log.debug('hello world')
?我尝试在
范围之后插入它。$apply
但没有骰子。