AngularJS引导程序对话框重新打开问题

时间:2013-03-18 23:06:10

标签: jquery twitter-bootstrap angularjs

我正在使用引导程序对话框来编辑和创建新元素。打开用于创建新元素的对话框的函数是从jQuery单击处理程序调用的,因为这是由第三方lib完成的。

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

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要在$ scope中包含从Earth到Oz的转换。$ apply call:

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

如果您查看Angular UI Boostrap Dialog source,您可能会注意到一些基于承诺的状态管理,例如围绕第229行加载模板的内容。请注意您将如何陷入不同的异步行为,具体取决于是否已加载模板(第一次按下按钮后更改的条件)。 documentation for $q很好地说明了通过使用$ apply将这种活动放在Angular的摘要循环中的必要性。