我试图通过单击另一个弹出窗口上的按钮来打开弹出窗口。我不确定它有多可能。 HERE is a Fiddle I created。任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
更新: AngularJS 1.2.0 has been released,具体取决于您的时区。
它使得承诺A+ compliant并消除了$digest
中令人讨厌的$timeout
的需要,并且嵌套的popover
完美地运作:http://plnkr.co/edit/zHFM9gJ6FLaUj2dWLR3I?p=preview
\ O /
问题有点复杂,不是直接在您的代码中,而是在angular-strap.js
中,在第576行。
popover.getPosition = function () {
var r = $.fn.popover.Constructor.prototype.getPosition.apply(this, arguments);
$compile(this.$tip)(scope);
scope.$digest();
this.$tip.data('popover', this);
return r;
};
scope.$digest()
在$compile
之后调用,$q
运行嵌入的角度,但仅用于一个摘要循环。出于某种原因,第542行的 $q.when(options.content || $templateCache.get(value) || $http.get(value, { cache: true })).then(function onSuccess(template) {
:
then
在调用另一个$scope.$digest
之前不执行$digest
部分。在$timeout
解决问题后启动另一个 popover.getPosition = function () {
var r = $.fn.popover.Constructor.prototype.getPosition.apply(this, arguments);
$compile(this.$tip)(scope);
scope.$digest();
$timeout(function () { scope.$digest(); }); // <-- The fix.
this.$tip.data('popover', this);
return r;
};
循环:
$digest
这是一个在使用库调整后运行的版本:http://plnkr.co/edit/KHgyvUOhreT8sG7RECpU
但是,我怀疑这并不能完全解决问题,因为这只会运行bootstrap.js
循环两次。我必须更多地思考如何正确解决这个问题。这可能与此问题有关:https://github.com/mgcrea/angular-strap/issues/255
我建议您尝试ui-bootstrap
完全不依赖angular.js
,并与{{1}}进行更好的整合。