Jquery 如何在角度模态窗口($uibModalInstance)打开后运行代码?
我需要在模态窗口中对某些事件做出响应 以此为基础。 假设(演示)需要在模式窗口中单击所有标签时提醒标签内容: 模态控制器中的代码无效Jquery 如何在角度模态窗口($uibModalInstance)打开后运行代码?,jquery,angularjs,angular-ui-bootstrap,angular-ui-modal,Jquery,Angularjs,Angular Ui Bootstrap,Angular Ui Modal,我需要在模态窗口中对某些事件做出响应 以此为基础。 假设(演示)需要在模式窗口中单击所有标签时提醒标签内容: 模态控制器中的代码无效 angular.module('ui.bootstrap.demo') .controller('ModalInstanceCtrl', function ($scope, $uibModalInstance) { $('label').click(function(e){ console.log(e); });
angular.module('ui.bootstrap.demo')
.controller('ModalInstanceCtrl',
function ($scope, $uibModalInstance) {
$('label').click(function(e){
console.log(e);
});
您的代码没有任何效果,因为当它执行时,模板还不是DOM的一部分。如果将这行代码放入控制器中:
console.log($('label').length);
您可以看到它返回0。因此,您只需等待模板加载的那一刻。Angular中有一个常见的技巧,在这种情况下很有帮助:将代码放入$timeout服务中,如下所示:
$timeout(function() {
$('label').on('click', function(e){
console.log(e);
});
});
Timeout将把代码放在当前执行管道的最末端,此时弹出模板将位于DOM中
但这当然是一个肮脏的黑客行为:)如果您需要编写一些jQuery代码,更具角度的方法是编写一个单独的指令,并将其应用于模板中的各个元素。不要忘记各种各样的本机指令,例如“ng click”等。您的代码没有任何效果,因为当它执行时,模板还不是DOM的一部分。如果将这行代码放入控制器中:
console.log($('label').length);
您可以看到它返回0。因此,您只需等待模板加载的那一刻。Angular中有一个常见的技巧,在这种情况下很有帮助:将代码放入$timeout服务中,如下所示:
$timeout(function() {
$('label').on('click', function(e){
console.log(e);
});
});
Timeout将把代码放在当前执行管道的最末端,此时弹出模板将位于DOM中
但这当然是一个肮脏的黑客行为:)如果您需要编写一些jQuery代码,更具角度的方法是编写一个单独的指令,并将其应用于模板中的各个元素。不要忘记各种各样的本机指令,如“ng click”等。为什么要在角度控制器中使用jquery代码?只需在标签上添加一个ng click。假设我无法访问HTML代码,只能访问JS,生成的标签编号(我需要将click附加到所有标签上)事先不知道。在这里,我制作了一个,供您尝试并调整您需要的方式。@Serge对于动态方法,您需要使用HTML(要使
ng click
工作),未知函数应该添加@Serge ah是的,好的旧嵌套模型为什么在角度控制器中使用jquery代码?只需在标签上添加一个ng click。假设我无法访问HTML代码,只能访问JS,生成的标签编号(我需要将click附加到所有标签上)事先不知道。在这里,我制作了一个,供您尝试并调整您需要的方式。@Serge对于动态方法,您需要使用HTML(要使ng click
工作),其中未知函数应添加@Serge ah yes,良好的旧嵌套modalsA bit modified