Loop infinito com setInterval

0 respostas
M

Faço o debug no chrome, e vejo que mesmo com a variável contador igual a zero, o método contagem fica em loop infinito.

To usando o backbone.js para montar as views.

initialize : function() {
                this.contagem();
            }, 
            
            contagem : function(){ 
            if (contador > 0){
                $('#tempo').html(contador); 
                $('#barra-interna').css('width', contador * 10);    
                contador = contador - 1;
                intervalID = setInterval(this.contagem, 1000);

	     }
            else {
                window.clearInterval(intervalID);
                $('#tempo-container').hide();
		        $('#link').css('display', 'block');
                intervalID = null;
	        }
        },

O código inteiro da view:

define(function(require) {

    var chat = require('core/chat');
    var Backbone = require('backbone');
    var $ = require('jquery');
    var agentOfferTemplate = require('hbs!templates/agent-offer');
    var contador = 20;
    var intervalID;
    
    AgentOfferView = Backbone.View.extend({
   
    
        template : agentOfferTemplate,
         
        
        initialize : function() {
            this.contagem();
        }, 
           
        events : {
                'click  .ok'  : 'acceptOffer'
            },    
                
        render : function() {
                this.$el.append(this.template(this.model.toJSON()));
                return this;
            },
                    
        contagem : function(){ 
            if (contador > 0){
                $('#tempo').html(contador); 
                $('#barra-interna').css('width', contador * 10);    
                contador = contador - 1;
                intervalID = setInterval(this.contagem, 1000);

	        }
            else {
                window.clearInterval(intervalID);
                $('#tempo-container').hide();
		        $('#link').css('display', 'block');
                intervalID = null;
	        }
        },    
            
  
        acceptOffer : function(){
            chat.acceptOffer(this.model.get('offerId'), this.model.get('workgroup'));
            this.remove();
        }  
        
         

    });
    
    return AgentOfferView;
});
Criado 11 de março de 2013
Respostas 0
Participantes 1