Javascript 角度指令,触发范围函数
我有一个自定义弹出面板,我想添加功能,以便在面板外单击屏幕时关闭。我创建了一个指令来实现这一点,但我很难告知关闭事件发生了Javascript 角度指令,触发范围函数,javascript,angularjs,Javascript,Angularjs,我有一个自定义弹出面板,我想添加功能,以便在面板外单击屏幕时关闭。我创建了一个指令来实现这一点,但我很难告知关闭事件发生了 <div ng-if="ui.showConfig" auto-hide="ui.showConfig=false">...</div> 。。。 JS myApp.directive('autoHide', [功能(){ 返回{ 限制:“A”, 范围:{ “自动隐藏”:“&” }, 链接:函数(范围、元素、属性){ var$overlay=$(“
<div ng-if="ui.showConfig" auto-hide="ui.showConfig=false">...</div>
。。。
JS
myApp.directive('autoHide',
[功能(){
返回{
限制:“A”,
范围:{
“自动隐藏”:“&”
},
链接:函数(范围、元素、属性){
var$overlay=$(“”);
$overlay
.附件(“正文”)
.1(单击),功能(e){
元素。隐藏();
$overlay.unbind().remove();
//这不是开火。。。
//scope.autoHide();
});
css(“zIndex”,“2001”);
在(“$destroy”,function()上{
$overlay.unbind().remove();
});
}
};
}]);
覆盖单击事件正在触发。面板隐藏起来了。但是ui.showConfig
没有设置为false,这会导致用户单击按钮两次,以便下次打开面板
另外,如果有另一种方法我应该考虑,请让我知道! 首先,我想建议您不要在DOM额外元素中使用jquery追加,或者其他一些东西,我还想建议您使用ready build
这会给你带来更多的优势。您可以查看链接并查看示例以及如何在项目中包含模块。我非常确定弹出引导mpodal所需的所有功能已经具备 我确实尝试了您的JSFIDLE,显然事件会触发,但是我不明白
scope.autoHide()
?在事件处理程序中,您需要调用scope.$apply()
,以便angular了解更改:
// This is not firing...
scope.autoHide();
scope.$apply();
你能在plunker中发布你的代码吗?太好了,这正是我需要的!
// This is not firing...
scope.autoHide();
scope.$apply();