Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
在AngularJs中,如何从控制器绑定和解除绑定mousemove数据?_Angularjs - Fatal编程技术网

在AngularJs中,如何从控制器绑定和解除绑定mousemove数据?

在AngularJs中,如何从控制器绑定和解除绑定mousemove数据?,angularjs,Angularjs,我已绑定应用程序的mousemove以检查用户是否仍在使用它: <body data-ng-mousemove="data.OnMouseMove()" 这可以正常工作,但如果用户连续移动鼠标,则会中断动画。所以我想禁用mousemove事件20秒,但不知道如何禁用。类似这样的伪代码: $scope.data.OnMouseMove = function () { document.getElementsByTagName("body")[0].data-ng-mousemo

我已绑定应用程序的mousemove以检查用户是否仍在使用它:

<body data-ng-mousemove="data.OnMouseMove()"  
这可以正常工作,但如果用户连续移动鼠标,则会中断动画。所以我想禁用mousemove事件20秒,但不知道如何禁用。类似这样的伪代码:

$scope.data.OnMouseMove = function ()
{
    document.getElementsByTagName("body")[0].data-ng-mousemove = "";

    AccountService.RefreshToken();

    window.setTimeout(function () 
    {
       document.getElementsByTagName("body")[0].data-ng-mousemove = "data.OnMouseMove()";
    }, 20000);
};

如果最近刷新了令牌,您的服务中可能会有一个标志。如果是这种情况,那么只需在鼠标悬停事件中返回void。

如果最近刷新了令牌,您的服务中可能会有一个标志。如果是这种情况,那么只需在鼠标悬停事件中返回void。

我找不到任何动态更改ng mousemove事件的方法。AngularJS不是这样设计的

唯一的其他AngularJS选项可能是编写自定义属性指令,并动态使用$compile和$destroy对其进行更改。但我知道的还不够多

最简单、最快的解决方案就是简单地使用非角度Javascript事件,您可以轻松地绑定和解除绑定,并在该事件中调用角度服务

像这样:

"use strict";

var HandleMouseMoveOnBody = function()
{
    var htmlScope = angular.element(document.getElementById('htmlId')).scope(); //get access to angular from the outside
    htmlScope.data.OnMouseMove(); //refresh the token in Angular service

    $('body').off('mousemove'); //stop watching mouse movement as it slows the entire page

    //watch mouse movement again in a minute
    window.setTimeout(function() 
    {
        $('body').on('mousemove',  HandleMouseMoveOnBody);
    },  55000);        
};

//start watching
$(document).ready(function()
{
    $('body').on('mousemove', HandleMouseMoveOnBody);
});

我找不到任何动态更改ng mousemove事件的方法。AngularJS不是这样设计的

唯一的其他AngularJS选项可能是编写自定义属性指令,并动态使用$compile和$destroy对其进行更改。但我知道的还不够多

最简单、最快的解决方案就是简单地使用非角度Javascript事件,您可以轻松地绑定和解除绑定,并在该事件中调用角度服务

像这样:

"use strict";

var HandleMouseMoveOnBody = function()
{
    var htmlScope = angular.element(document.getElementById('htmlId')).scope(); //get access to angular from the outside
    htmlScope.data.OnMouseMove(); //refresh the token in Angular service

    $('body').off('mousemove'); //stop watching mouse movement as it slows the entire page

    //watch mouse movement again in a minute
    window.setTimeout(function() 
    {
        $('body').on('mousemove',  HandleMouseMoveOnBody);
    },  55000);        
};

//start watching
$(document).ready(function()
{
    $('body').on('mousemove', HandleMouseMoveOnBody);
});

您是否考虑过放置
AccountService.refreshtToken()
在“setTimeout”回调正文中?或者,您可能对以下内容感兴趣:也许您想移动鼠标处理程序?谢谢大家,是的,我的刷新令牌方法已被限制,几乎需要0毫秒。但是只要在身体上有mousemove事件,就会导致这个事件不断触发。实际上,我需要完全解除绑定,然后再重新绑定事件,而不仅仅是在其中做得更少。现在查看Sphaso的链接…您是否考虑过放置
AccountService.refreshtToken()
在“setTimeout”回调正文中?或者,您可能对以下内容感兴趣:也许您想移动鼠标处理程序?谢谢大家,是的,我的刷新令牌方法已被限制,几乎需要0毫秒。但是只要在身体上有mousemove事件,就会导致这个事件不断触发。实际上,我需要完全解除绑定,然后再重新绑定事件,而不仅仅是在其中做得更少。正在查看Sphaso的链接。。。