我正在使用angular-ui-router应用程序处理angular.js。侦听文档单击事件的指令在创建后立即被触发
我在我的应用程序模仿一种弹出的状态。
我创建了一个指令,负责将应用移动到不同的状态,当有人点击弹出元素之外。
我创建了一个js.fiddle我的代码: http://jsfiddle.net/lobengula3rd/1e908559/8/
状态1 - 为弹出状态。
状态2 - 是一个不同的状态。
我在状态2,当点击它将使状态状态变为1(弹出状态)的链接:
<a ui-sref="state1">state1</a>
这是我的指令代码:
.directive('closeOnOuterClick', ['$document', '$state', function ($document, $state) {
return {
restrict: 'A',
link: function (scope, element, attributes) {
$document.on("click", function (evt) {
$document.off('click');
$state.go(attributes['closeOnOuterClick']);
});
element.on("click", function (evt) {
evt.stopPropagation();
});
}
};
}]
的问题在于,由于某种原因,在创建popup元素后,'document.on'click事件的侦听器函数立即被触发,从而将我抛出。 我不明白为什么函数立即被调用。
如果我在我的控制器(第20行)上的应用程序开始我会去状态1,而不是状态2改变,它会工作得很好,第一次。
我试图改变这种改变状态的NG-click事件,这将调用一个函数在我的控制器的联系,但也没有工作。
我的代码有什么问题?
这不会帮助我。我想把数据放在弹出窗口中。 我只需要点击弹出窗口外部的关闭 – lobengula3rd 2014-10-29 16:54:48