2015-10-14 47 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),可以 然後用酥料餅的,是開放的屬性完全顯示和隱藏 的酥料餅。