2013-07-22 12 views
5

Sono consapevole di $ digerisco già in circolazione errore progresso, ma qui I'am non chiamando il metodo applicare o digerire esplicitamente

sto utilizzando due chiamate HTTP in funzione stessi angularJS che mi porta a l'errore che $ digest già in corso, il mio codice è come

$http.post('/CRUDOper/memberInsert',$scope.memberAdd). 
     success(function(post){ 
      if(!post.IsSuccess){ 
       alert(post.msg + "Try Again"); 
       return; 
      } 
      alert("Member Added Successfully"); 
     } 
    ); 

    var autopass = Math.random().toString(36).slice(-8); 
    var passwordinsert = {formno : $scope.memberAdd.formno, password : autopass }; 
    $http.post('/CRUDOper/autogeneratepassword',passwordinsert). 
     success(function(post){ 
      if(!post.IsSuccess){ 
       alert(post.msg + "Try Again"); 
       return; 
      } 
      alert("Autogenerated Password for present user : " + autopass); 
     } 
    ); 

sia la richiesta sono chiamati correttamente ciò che la mia preoccupazione è l'errore nel firebug che $ digest già in corso è in qualche modo in grado di gestire questo errore? ciclo di eventi

+0

Come hai detto nella domanda, non dovresti avere questo problema se non stai chiamando $ apply () o $ digest() manualmente. Sei assolutamente sicuro che questo sia lo snippet di codice che causa il problema? – godfrzero

+0

sì perché quando chiamo una sola richiesta Http tutto sembra funzionare bene per me solo quando chiamo questi due insieme il problema si verifica –

+3

Hai provato a sostituire l'avviso a console.log? –

risposta

1

AngularJS' non aspetta fino alert(), confirm(), e prompt() restituire un valore (almeno per $http chiamate). Esiste tuttavia un breve intervallo tra il rendering del popup e l'immissione nel ciclo $digest. Questo spiega perché OP non ha ricevuto l'errore la prima volta: OP clicca o preme molto presto.

Per verificare che questo non dipenda dal numero di chiamate http, provare a utilizzare un avviso nel metodo success() di una singola chiamata http. Non ci saranno errori se confermate il popup entro ca. 300 ms, ma si verificherà un errore se lo confermerai in un secondo momento.

0

Dovresti utilizzare $ window.alert. Ancora questo accade quando un altro digest è in corso, una soluzione rapida è racchiusa in un timeout $()

Problemi correlati