在 ng 模糊上应用延迟
Apply delay on ng-blur
我正在使用ng-focus
和ng-blur
来显示/隐藏按钮。 在输入focus
时,会显示一个按钮,blur
显示按钮。显示/隐藏正在使用ng-show
执行。单击此按钮时,将调用一个函数。
现场演示
问题是,ng-blur
我们首先被调用,并且在触发单击事件之前按钮被隐藏,因此从该按钮调用的函数永远不会被调用。
我已经通过使用setTimeout()
修复了它,但后来发现它不是一个好的解决方案。还有其他方法可以解决此问题吗?
使用ng-mouseover
和ng-mouseleave
将按钮更改为
<button ng-click="click()" ng-show="show||mouseover" ng-mouseover="mouseover=true" ng-mouseleave="mouseover=false">Click to change</button>
演示
为什么
不在按钮的单击事件中更改$scope.show=false;
。
换句话说,删除模糊事件,点击事件将是这样的。
$scope.click = function(){
alert("fuu")
$scope.text = "We changed it";
$scope.show=false;
}
我认为使用布尔值可以帮助您确定是否需要隐藏或显示按钮的状态。将鼠标悬停在按钮上时,更改布尔值以确定模糊函数的执行。
试试这种方式:
.HTML:
<div ng-app ng-controller="LoginController">
<div>{{ text }}</div>
<input ng-focus="focus()" ng-blur="blur()"></input>
<button ng-click="click()" ng-show="show==true" ng-mouseover="mouseover()">Click to change</button>
</div>
Angularjs :
function LoginController($scope) {
$scope.show=false;
$scope.blurAll = true;
$scope.text = "this thing will change on click";
$scope.focus = function(){
console.log("buu");
$scope.show=true;
}
$scope.blur = function(){
if(blurAll){
console.log("baaa");
$scope.show=false;
}
}
$scope.click = function(){
alert("fuu");
$scope.text = "We changed it";
$scope.show = false;
}
$scope.mouseover = function(){
blurAll = false;
};
}
js小提琴
使用引入延迟的自定义指令
app.directive('ngBlurDelay',['$timeout',function($timeout){
return {
scope:{
ngBlurDelay:'&'
},
link:function(scope, element, attr){
element.bind('blur',function(){
$timeout(scope.ngBlurDelay,200);
});
}
};
}])
相关文章:
- 如何减少在移动网络应用程序上播放声音的延迟
- 在javascript for循环的迭代之间应用延迟
- 在菜单下拉条上应用2秒延迟
- 余烬.为真正的大应用程序延迟加载模板和 JavaScript
- 延迟加载角度应用程序不会加载指令
- 应用脚本而不加载延迟
- 在 ng 模糊上应用延迟
- 如何避免Spotify应用程序中同步web服务调用的延迟
- 在jQuery的每次迭代之间应用延迟's.each()方法
- 从javascript监控web应用程序的UI延迟
- JavaScript/CSS:向DOM添加元素和应用其CSS规则之间的延迟
- GWT.延迟启动应用程序
- 如何在jquerymobile中应用延迟加载
- angularjs将加载应用程序延迟到指定条件
- 如何在谷歌应用引擎中返回延迟任务的数据
- 使用webkit运行iOS应用程序时延迟选择
- 将延迟应用于动画jquery
- jQuery.css():属性中是否存在固有延迟's对元素的应用程序
- 如何在bxslider中的每个幻灯片之间应用不同的延迟
- Jquery/CSS:如何在mouseenter事件上应用延迟1秒的addClass