2016-12-08 4 views
0

Eigentlich versuche ich, Posteingang wie GMAIL zu erstellen. Aber ich kann die empfangene Nachricht nicht anzeigen, sobald der Absender diese Nachricht gesendet hat. Ich benutze angularjs und codeigniter.Kommunikation zwischen zwei Steuerungen, die in verschiedenen Webbrowsern von zwei verschiedenen oder gleichen divces geöffnet ist

Ich habe zwei Controller Sender und Empfänger. Sobald der Absender eine Nachricht sendet, aktualisiere ich die Scope-Variablen des Empfängercontrollers. Aber es funktioniert nicht.

Mein Sender-Controller Nachrichtensendefunktion -

$scope.send_message_toCustomer = function(counselor_id,thread_title) { 
    var thread_id=$('#threadid').val(); 
    //console.log(thread_id); 
     $scope.inboxMessage.message=$scope.message; 
     $scope.inboxMessage.thread_id=thread_id; 
     var request = $http({ 
      method:"POST", 
      url: site_url+"thread/insert_thread_message", 
      data : $scope.inboxMessage, 
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' }  
     }); 
     request.success(function($data){ 
       //console.log($data); 
       if($data==1) 
      { 
       $scope.message=''; 
          getCustomerChildThread.getChildThread().success(function($data) 
       { 
        //console.log($data); 
        $scope.C_Thread = angular.copy($data);    
       }); 
       $('#inbox_sub_menu').css('display', 'block'); 
       $('#s_menu').addClass('open'); 
       //$timeout(function() { 
        $scope.inbox_aco_thread.thread_id=thread_id; 
        var request = $http({ 
         method:"POST", 
         url: site_url+"thread/inbox_thread", 
         data : $scope.inbox_aco_thread, 
         headers: { 'Content-Type': 'application/x-www-form-urlencoded' }  
        }); 
        request.success(function($data){ 
          $('#thread_msg_count_'+thread_id).removeClass('msg_count'); 
            $scope.inbox_messages=angular.copy($data); 
            $scope.inbox_messages.counselor_id=angular.copy(counselor_id); 
            $scope.inbox_messages.thread_id=angular.copy(thread_id); 
            $scope.inbox_messages.thread_title=angular.copy(thread_title); 
          }); 
          //}, 500); 
         } 
        }); 

       }; 

Nach dieser Funktion möchte ich meinen Receiver Steuerungsbereich aktualisieren. Mein Receiver-Controller-Daten erhalten funk-

$scope.inbox_cust_thread=function(customer_id,thread_id,thread_title) 
{ 
    $('#thread_msg_count_'+thread_id).removeClass('msg_count'); 
    $scope.main_threadview=true; 
    $scope.add_threadview=false; 
    $scope.cust_thread.loading = false;     
    $scope.inbox_cu_thread.counselor_id=counselor_id; 
    $scope.inbox_cu_thread.thread_id=thread_id; 
    var request = $http({ 
       method:"POST", 
       url: site_url+"Customer_thread/inbox_thread", 
       data : $scope.inbox_cu_thread, 
       headers: { 'Content-Type': 'application/x-www-form-urlencoded' }  
      }); 
      request.success(function($data){ 
       //$('#thread_msg_count_'+thread_id).addClass('msg_count'); 
       $scope.cust_inbox_messages=$data; 
       $scope.cust_inbox_messages.customer_id=customer_id; 
       $scope.cust_inbox_messages.thread_id=thread_id; 
       $scope.cust_inbox_messages.thread_title=thread_title; 
       //$scope.cust_inbox_messages.counselor_id=counselor_id; 
     }); 
}; 

Anybody mir bitte helfen.

+0

Prüfung mit $ gilt nach Variablen Umfang zu aktualisieren .... wäre es sehr hilfreich sein, wenn u Code schreiben oder eine Plunker oder Geige zu uns –

Antwort

1

Ich denke, es ist nicht möglich, Sie müssen die Nachrichten in einer Datenbank speichern, dann in angularjs müssen Sie eine Anfrage alle Minuten zum Beispiel zu überprüfen, ob es neue Nachrichten gibt.

+0

Danke .. schaffen !!! Es funktioniert jetzt. Ich habe es per Datenbank gemacht. – Kavita

0

Ich empfehle Ihnen, die Browsersitzung für jede Registerkarte zu verfolgen und dann die E-Mail auf die aktive Registerkarte dieser Sitzung zu schieben. Versuchen Sie herauszufinden, wie Sie die aktive Browserregisterkarte im Client eindeutig identifizieren und Daten an diese Registerkarten senden können. Dies könnte die Logik sein, die Sie suchen. Weil Sie keine Informationen zwischen Controllern verschiedener Registerkarten austauschen können, da sich der Anwendungskontext in verschiedenen Registerkarten unterscheidet.

Verwandte Themen