Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度指令,触发范围函数_Javascript_Angularjs - Fatal编程技术网

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();