2015-10-14 45 views
5

我不想使用popover-is-open指令显示ui.bootstrap弹出窗口。例如,在模板:ui.bootstrap popover-is-open无法正常工作

<button class="fa fa-link add-link" 
    uib-popover="popover" 
    popover-is-open="isOpen"> Show popover </i> 

并在控制器:

angular.module('demoModule').controller('PopoverDemoCtrl', function ($scope) { 
    $scope.isOpen = false;  
}); 

plunkr

我期待那酥料饼不应该被打开,但在它打开的点击。看起来popover-is-open仅影响第一次角度编译。有任何想法吗?

upd:实际上,我不想仅在某些情况下显示弹出窗口,在其他情况下,它应显示。例如,我有下载对话框弹出窗口,我只想在文件大小大于某个限制时才显示它。

回答

5

popover-is-open仅适用于初始行为,即如果它蒸发至true,则即使没有点击,弹出窗口也会立即打开。如果您在您的PLUNK中将isOpen的值更改为true,则会看到(my example plunkr)。

你想要什么popover-enable属性:

<button class="fa fa-link add-link" 
uib-popover="popover" 
popover-enable="isOpen">Show popover</button> 

更新的问题更新:

你可以自由地评估在popover-enable属性,而不是静态isOpen任何布尔表达式,它总是在你的例子中,到false

我已经创建了一个advanced plunkr表明:

<input type="text" ng-model="downloadSize"> 
<button class="fa fa-link add-link" 
uib-popover="popover" 
popover-enable="isOpen()">Show popover</button> 

与控制器代码

$scope.isOpen = function() { return $scope.downloadSize > 100; } 

你有一个新的文本框,您可以输入数字,模拟下载大小。当它得到> 100时,弹出窗口将被启用。

+0

你说得对,但是如果我只想在某些情况下不打开popover呢?例如,我有下载对话框,并且只在文件大小大于100Mb时才显示它。 –

+0

您可以自由评估'popover-enable'属性的任何布尔条件。我会用一个例子更新我的答案。 – Desty

1

使用

$scope.$apply(function() { 

$scope.isOpen = false;  

}); 

应用此性质

2

为了处理打开状态方法白衣popover-is-open值必须设置popover-trigger="none"也许popover-trigger="'none'"。因为它说的docs

使用“无”触发将禁用内部触发信号(S),可以 然后用酥料饼的,是开放的属性完全显示和隐藏 的酥料饼。