上下文:我正在使用角度1和此UIB Popover控件。
由于我在弹出框模板中有一个文本字段,因此我的目标是在打开弹出框时将重点放在该文本字段上。
不幸的是,“ onOpen”没有弹出监听器/事件。
所以我尝试做
scope.$watch(()=>{return scope.isOpen}, (obj) ={
// where scope.isOpen is the local var in the popover-is-open
// expecting to write some code here to manipulate the element
// to realise the focus operation
// but there is no popover element yet when this is called
})
我只是想知道我还有什么选择?
谢谢
答案 0 :(得分:0)
我在有关事件的文档中没有发现任何问题,并且在ui-bootstrap github上发现了此问题,表明它们不支持事件,也不打算实施它们。 https://github.com/angular-ui/bootstrap/issues/5060
如果您正在寻找使您能够访问事件的其他选项,则将实现您自己的popover指令,该指令仅包装引导程序弹出窗口。从理论上讲,它们可以起到与ui-bootstrap相同的作用,并允许您直接利用bootstrap提供的事件。
HTML
<div my-popover="Hello World" popover-title="Title" popover-shown="myCallback()">...</div>
JavaScript('my-popover.directive.js')
angular
.module('myModule')
.directive('myPopover', myPopover);
function myPopover() {
return {
scope: {
popoverTitle: '@',
popoverShown: '&'
},
restrict: 'A',
link: function(scope, elem, attr) {
$(elem).popover({
title: scope.popoverTitle,
content: attr.myPopover
});
$(elem).on('shown.bs.popover', function () {
if(scope.popoverShown && typeof scope.popoverShown === 'function'){
scope.popoverShown();
}
});
}
};
}
类似于uib-popover,您可以通过添加其他作用域属性来添加对其他配置的支持。