0

我正在使用引导对话框来编辑和创建新元素。从 jQuery click 处理程序调用打开对话框以创建新元素的函数,因为这是由 3rd 方库完成的。

通过指令调用打开对话框以编辑元素的功能。

通过指令打开对话框每次都可以正常工作。第一次通过 jQuery 单击处理程序打开对话框也可以正常工作,但是当我关闭对话框并尝试通过单击处理程序再次打开它时,它不会打开,直到单击带有指令的按钮然后两者(编辑和新项目)对话框打开。

我在这里做了一个简化的例子:http: //plnkr.co/edit/HGvrqH ?p=preview

我究竟做错了什么?

4

1 回答 1

1

您需要在 $scope.$apply 调用中包含从 Earth 到 Oz 的过渡:

window.newItem = function(){
  $scope.$apply(function () {
    $scope.newItem();
  });
};

如果您查看 Angular UI Boostrap对话框源代码,您可能会注意到一些基于 Promise 的状态管理,例如围绕第 229 行加载模板的内容。注意您将如何陷入不同的异步行为,具体取决于您是否已加载您的模板与否(第一次按下按钮后会发生变化的条件)。$q的文档很好地说明了需要通过使用 $apply 将此类活动放入 Angular 的摘要循环中。

于 2013-03-19T03:22:32.303 回答