我创建了一个 plunker 来重现问题:
http://plnkr.co/edit/sPPB0Cq0PUg1jmzzZtXh
它包含一个带有 angular-ui-bootsrap 的迷你 Angular js 应用程序。
我用我自己的服务包装了 $modal,该服务响应
通过显示模态广播“show-modal”事件并创建一个
作为属性附加到元素的指令和
发出/广播此事件。
问题:
我正在尝试使用 $modal 服务打开一个模态窗口。
它打开,然后我关闭它后,我无法再次打开它。
实际上,当再次尝试打开时,它似乎没有打开。但是当导航到 Angular 应用程序中的另一个位置时,模态突然出现(或模态,如果你点击了很多次)。
我有点迷路了,文档并没有真正帮助我。
谁能检查一下并告诉我我做错了什么?
最佳答案
在回顾了模态确实有效的一些案例之后,我想我在我之前提出的同一个 plunker 上找到了一个解决方案
http://plnkr.co/edit/sPPB0Cq0PUg1jmzzZtXh
您必须使用 $modalInstance 来 .close() 和 .dismiss() 模态。
文档建议可以使用注入(inject)的 $close $dismiss 函数,但使用这些函数给我带来了问题......
我保留了问题并在新文件中实现了解决方案,因此您可以查看两者(随意)。
- - 编辑 - -
如果全部失败 $scope.apply() (或 $rootScope.apply())
我在发出打开模态的信号后尝试 scope.apply 并且它成功地立即显示模态而不是在下一个周期(例如通过转到另一个页面触发)
关于angularjs + bootstrap ui + $modal -> 只在第一次显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997616/