0

我需要在模态窗口中响应某些事件。

以此CodePen为基础。假设一个(演示)需要在点击模态窗口中的 所有标签时提醒标签内容:

在此处输入图像描述

我在模态控制器中的代码无效

angular.module('ui.bootstrap.demo')
  .controller('ModalInstanceCtrl',
              function ($scope, $uibModalInstance) {
  $('label').click(function(e){
    console.log(e);
  });
4

2 回答 2

1

您的代码没有任何效果,因为当它执行时,模板还不是 DOM 的一部分。如果你把这行代码放在控制器中:

console.log($('label').length);

您可以看到它返回 0。因此,您只需要等到模板加载的那一刻。Angular 中有一个常见的技巧,在这种情况下会有所帮助:将代码放入 $timeout 服务中,如下所示:

$timeout(function() {
  $('label').on('click', function(e){
    console.log(e);
  });
});

超时会将代码放在当前执行管道的最后,此时弹出模板将位于 DOM 中。

但这当然是一个肮脏的 hack :) 如果您需要编写一些 jQuery 代码,更多的 Angular 方法是编写一个单独的指令并将其应用于模板中的相应元素。并且不要忘记种类繁多的本地指令,例如“ng-click”等。

于 2018-01-30T15:37:57.970 回答
1
$uibModalInstance.rendered.then(function(){
  // run your code here and you are fine.
});
于 2018-07-16T06:45:56.270 回答