如何将自定义 jquery 事件侦听器转换为 angularjs 侦听器?
How can I convert custom jquery event listener into angularjs listener?
我已经创建了 angularjs
组件。我在jquery写了一个自定义事件监听器,event
被非angularjs库触发。
$( "#myDiv" ).on( "CornerstoneImageRendered", function(e) {
// buisness logic
});
myDiv 是一个 div
,它是 angularjs
组件的一部分。
我想将此侦听器写入 angularjs
组件。我该怎么做?
PS: 事件 link https://github.com/cornerstonejs/cornerstone/wiki/CornerstoneImageRendered-Event
如果您要监听来自外部非 angularjs 库的事件,您需要在发生更改时通知 angularjs。
一种方法是将由外部事件触发的逻辑包装在 $scope.$apply 方法中。 $apply 方法将
通知 angularjs 发生了更改并触发了摘要循环,该循环会将更改从范围同步到视图。
在控制器中添加事件并像这样尝试
$("#myDiv").on("CornerstoneImageRendered", function(e) {
$scope.$apply(function () {
// buisness logic on the scope
});
});
Here's 关于这个主题的精彩文章
要首先存档您需要的内容,您需要使用
angular.element 然后你可以添加事件监听器
创建自定义指令:
app.directive("myEventListener", function() {
return {
link: postLink
};
function postLink(scope, elem, attrs) {
elem.on( "CornerstoneImageRendered", function(event) {
// business logic
scope.$eval(attrs.myEventListener, {$event: event});
scope.$apply();
});
}
});
用法
<div id="myDiv" my-event-listener="onMyEvent($event)">
</div>
JS
$scope.onMyEvent = function(event) {
console.log(event);
};
有关详细信息,请参阅 AngularJS Developer Guide - Creating Custom Directives
我已经创建了 angularjs
组件。我在jquery写了一个自定义事件监听器,event
被非angularjs库触发。
$( "#myDiv" ).on( "CornerstoneImageRendered", function(e) {
// buisness logic
});
myDiv 是一个 div
,它是 angularjs
组件的一部分。
我想将此侦听器写入 angularjs
组件。我该怎么做?
PS: 事件 link https://github.com/cornerstonejs/cornerstone/wiki/CornerstoneImageRendered-Event
如果您要监听来自外部非 angularjs 库的事件,您需要在发生更改时通知 angularjs。 一种方法是将由外部事件触发的逻辑包装在 $scope.$apply 方法中。 $apply 方法将 通知 angularjs 发生了更改并触发了摘要循环,该循环会将更改从范围同步到视图。
在控制器中添加事件并像这样尝试
$("#myDiv").on("CornerstoneImageRendered", function(e) {
$scope.$apply(function () {
// buisness logic on the scope
});
});
Here's 关于这个主题的精彩文章
要首先存档您需要的内容,您需要使用
angular.element 然后你可以添加事件监听器
创建自定义指令:
app.directive("myEventListener", function() {
return {
link: postLink
};
function postLink(scope, elem, attrs) {
elem.on( "CornerstoneImageRendered", function(event) {
// business logic
scope.$eval(attrs.myEventListener, {$event: event});
scope.$apply();
});
}
});
用法
<div id="myDiv" my-event-listener="onMyEvent($event)">
</div>
JS
$scope.onMyEvent = function(event) {
console.log(event);
};
有关详细信息,请参阅 AngularJS Developer Guide - Creating Custom Directives