我有一个自定义的弹出式面板,我想添加功能,以便在面板外单击屏幕时关闭。我创建了一个指令来完成这个任务,但是我很难说明关闭事件发生了。Angular指令,触发范围函数
<div ng-if="ui.showConfig" auto-hide="ui.showConfig=false">...</div>
JS
myApp.directive('autoHide',
[function() {
return {
restrict: 'A',
scope: {
'autoHide': '&'
},
link: function (scope, element, attrs) {
var $overlay = $("<div style='position:absolute;top:0;left:0;width:100%;height:100%;z-index:2000;'>");
$overlay
.appendTo("body")
.one("click", function(e){
element.hide();
$overlay.unbind().remove();
// This is not firing...
// scope.autoHide();
});
element.css("zIndex", "2001");
element.on('$destroy', function() {
$overlay.unbind().remove();
});
}
};
}]);
叠加点击事件被触发。该小组正在隐藏。但是ui.showConfig
未设置为false,导致用户下次按两次以打开面板。
此外,如果有另一种方法,我应该考虑请让我知道!
您可以发布在plunker你的代码? – PSL 2014-08-28 19:09:57