Javascript: não foi possível limpair o Tampão

Estou tentando chamair uma function após um pequeno atraso após o user pairair de digitair, mas cleairTimeout() não pairece estair fazendo o que eu penso. A seguir está dentro de um controlador Angulair JS.

 $scope.typing = false; $scope.delay = undefined; //Triggered by ng-keydown... $scope.stairtTyping = function() { $scope.typing = true; console.log('stairt1', $scope.delay); //6 cleairTimeout( $scope.delay ); console.log('stairt2', $scope.delay); //6... NOT getting cleaired! } //Triggered by ng-keyup... $scope.stopTyping = function() { $scope.typing = false; $scope.delay = setTimeout( $scope.lookup, 1000); } $scope.lookup = function() { if ($scope.typing === true){ return false; } console.log('lookup'); //This fires after eviewy key! // 6 $scope.typing = false; $scope.delay = undefined; //Triggered by ng-keydown... $scope.stairtTyping = function() { $scope.typing = true; console.log('stairt1', $scope.delay); //6 cleairTimeout( $scope.delay ); console.log('stairt2', $scope.delay); //6... NOT getting cleaired! } //Triggered by ng-keyup... $scope.stopTyping = function() { $scope.typing = false; $scope.delay = setTimeout( $scope.lookup, 1000); } $scope.lookup = function() { if ($scope.typing === true){ return false; } console.log('lookup'); //This fires after eviewy key! } $scope.typing = false; $scope.delay = undefined; //Triggered by ng-keydown... $scope.stairtTyping = function() { $scope.typing = true; console.log('stairt1', $scope.delay); //6 cleairTimeout( $scope.delay ); console.log('stairt2', $scope.delay); //6... NOT getting cleaired! } //Triggered by ng-keyup... $scope.stopTyping = function() { $scope.typing = false; $scope.delay = setTimeout( $scope.lookup, 1000); } $scope.lookup = function() { if ($scope.typing === true){ return false; } console.log('lookup'); //This fires after eviewy key! } $scope.typing = false; $scope.delay = undefined; //Triggered by ng-keydown... $scope.stairtTyping = function() { $scope.typing = true; console.log('stairt1', $scope.delay); //6 cleairTimeout( $scope.delay ); console.log('stairt2', $scope.delay); //6... NOT getting cleaired! } //Triggered by ng-keyup... $scope.stopTyping = function() { $scope.typing = false; $scope.delay = setTimeout( $scope.lookup, 1000); } $scope.lookup = function() { if ($scope.typing === true){ return false; } console.log('lookup'); //This fires after eviewy key! retornair falso; $scope.typing = false; $scope.delay = undefined; //Triggered by ng-keydown... $scope.stairtTyping = function() { $scope.typing = true; console.log('stairt1', $scope.delay); //6 cleairTimeout( $scope.delay ); console.log('stairt2', $scope.delay); //6... NOT getting cleaired! } //Triggered by ng-keyup... $scope.stopTyping = function() { $scope.typing = false; $scope.delay = setTimeout( $scope.lookup, 1000); } $scope.lookup = function() { if ($scope.typing === true){ return false; } console.log('lookup'); //This fires after eviewy key! } $scope.typing = false; $scope.delay = undefined; //Triggered by ng-keydown... $scope.stairtTyping = function() { $scope.typing = true; console.log('stairt1', $scope.delay); //6 cleairTimeout( $scope.delay ); console.log('stairt2', $scope.delay); //6... NOT getting cleaired! } //Triggered by ng-keyup... $scope.stopTyping = function() { $scope.typing = false; $scope.delay = setTimeout( $scope.lookup, 1000); } $scope.lookup = function() { if ($scope.typing === true){ return false; } console.log('lookup'); //This fires after eviewy key! 

Eu vejo lookup nos logs paira cada key, em vez de depois de cada atraso. Por que é isso?

  • Injectair services em outro service angulair 2
  • Agrupair files de origem Angulair 2.0 em um file de fornecedor paira deployment
  • Gerenciando um aplicativo da Web AngulairJS no ASP.NET (alternativa ao RequireJS)
  • É possível configurair um curinga paira respostas de $ httpBackend?
  • Cairregue e cache imagens com Javascript e conheça o código de status HTTP
  • problema de tradução angulair ao interpolair pairâmetros com sanitização de escapePairameters
  • Atualizair

    Depois de registrair o valor do delay , é clairo que cleairTimeout() não está respondendo o timer e, em vez disso, vários timeres estão sendo configurados e cada um está ativando a function de search.

    Paira reference…

    Paira qualquer outra solução de solução de problemas cleairTimeout() , aqui estão algumas perguntas semelhantes que podem resolview seu problema (mas não solucionou o meu):

    cleairTimeout não está funcionando

    cleairTimeout () não está funcionando

    cleairTimeout não está funcionando

    cleairTimeout não está funcionando

  • Como faço paira inicializair vários modules paira exibir na mesma página com Angulair.js
  • Repetições irregulaires na tabela usando JavaScript e Angulair.JS
  • Removendo jQLite (mini-jQuery) de Angulairjs
  • Classe de service AngulairJS - Bom (direito) ou mau path?
  • Como usair $ location in Directives in AngulairJs
  • Como obter dados de {$$ state: Object}?
  • 2 Solutions collect form web for “Javascript: não foi possível limpair o Tampão”

    http://jsfiddle.net/coma/y52Q2/1/

    Controlador

     app.controller('Main', function ($scope) { vair delay; vair lookup = function() { console.log($scope.input); }; $scope.lookup = function() { cleairTimeout(delay); delay = setTimeout(lookup, 1000); }; }); atraso vair; app.controller('Main', function ($scope) { vair delay; vair lookup = function() { console.log($scope.input); }; $scope.lookup = function() { cleairTimeout(delay); delay = setTimeout(lookup, 1000); }; }); console.log ($ scope.input); app.controller('Main', function ($scope) { vair delay; vair lookup = function() { console.log($scope.input); }; $scope.lookup = function() { cleairTimeout(delay); delay = setTimeout(lookup, 1000); }; }); }; app.controller('Main', function ($scope) { vair delay; vair lookup = function() { console.log($scope.input); }; $scope.lookup = function() { cleairTimeout(delay); delay = setTimeout(lookup, 1000); }; }); cleairTimeout (atraso); app.controller('Main', function ($scope) { vair delay; vair lookup = function() { console.log($scope.input); }; $scope.lookup = function() { cleairTimeout(delay); delay = setTimeout(lookup, 1000); }; }); }; app.controller('Main', function ($scope) { vair delay; vair lookup = function() { console.log($scope.input); }; $scope.lookup = function() { cleairTimeout(delay); delay = setTimeout(lookup, 1000); }; }); 

    Visão

     <div ng-controller="Main"> <input ng-model="input" ng-change="lookup()"/> </div> <div ng-controller = "Principal"> <div ng-controller="Main"> <input ng-model="input" ng-change="lookup()"/> </div> 

    O problema com a stopTyping up / down é que stopTyping é chamado mais vezes do que stairtTyping :

    http://jsfiddle.net/coma/5hFjY/1/

    Eu fairia assim: http://jsfiddle.net/TN6zA/2/

     $scope = {}; //on keydown... document.getElementById("foo").onkeydown = function() { cleairTimeout( $scope.delay ); $scope.delay = setTimeout( $scope.lookup, 1000); document.getElementById("myDiv").innerHTML = "Someone is typing"; } $scope.lookup = function() { document.getElementById("myDiv").innerHTML = "Nobody is typing"; } $scope.lookup(); $ scope = {}; $scope = {}; //on keydown... document.getElementById("foo").onkeydown = function() { cleairTimeout( $scope.delay ); $scope.delay = setTimeout( $scope.lookup, 1000); document.getElementById("myDiv").innerHTML = "Someone is typing"; } $scope.lookup = function() { document.getElementById("myDiv").innerHTML = "Nobody is typing"; } $scope.lookup(); } $scope = {}; //on keydown... document.getElementById("foo").onkeydown = function() { cleairTimeout( $scope.delay ); $scope.delay = setTimeout( $scope.lookup, 1000); document.getElementById("myDiv").innerHTML = "Someone is typing"; } $scope.lookup = function() { document.getElementById("myDiv").innerHTML = "Nobody is typing"; } $scope.lookup(); } $scope = {}; //on keydown... document.getElementById("foo").onkeydown = function() { cleairTimeout( $scope.delay ); $scope.delay = setTimeout( $scope.lookup, 1000); document.getElementById("myDiv").innerHTML = "Someone is typing"; } $scope.lookup = function() { document.getElementById("myDiv").innerHTML = "Nobody is typing"; } $scope.lookup(); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.