1

Я интегрирую чат в своем ионном приложении, и я хотел бы отображать сообщения, следующие за их message.userId в базе данных.Как чередовать ng-класс?

У меня есть два человека refered в MyId (меня) и otherId (другое лицо). Оба они называются переменными в моем .js-файле.

Я использую этот код:

<li ng-repeat="message in messages" ng-class="{self: message.userId = myId, other: message.userId = otherId}"> 
       <!-- *avatar/avatar image --> 
       <div class="avatar"> 
        <img src="img/82.jpg"> 
       </div> 
       <!-- *msg/messages --> 
       <div class="msg"> 
        <p>{{ message.text }}</p> 
        <time> 
         <i class="icon ion-ios-clock-outline"></i> 
         {{message.time}} 
        </time> 
       </div> 
      </li> 

Однако отображает либо все сообщения как самостоятельно, или все сообщения как другие.

Вот мой контроллер:

.controller('Messages',['$scope', '$ionicScrollDelegate', '$timeout', '$firebaseArray', 'CONFIG', '$document', '$state', function($scope, $ionicScrollDelegate, $timeout, $firebaseArray, CONFIG, $document, $state) { 
     $scope.hideTime = false; 

     var myId = firebase.auth().currentUser.uid; 
     var otherId = "0LhBcBkECAXn6v12lA2rlPIsQNs2"; 
     var discussion = myId + otherId; 

     var isIOS = ionic.Platform.isWebView() && ionic.Platform.isIOS(); 


     //Recieve messages 
     var ref = firebase.database().ref('/messages/' + discussion); 
     ref.orderByChild("timestamp").on("value", function(snapshot1) { 
     console.log(snapshot1.val() + "HEY"); 
     $scope.messages = snapshot1.val(); 


     }) 
     window.scrollTo(0,document.body.scrollHeight); 


     //Send messages 
     $timeout(function(){ 
     $scope.sendMessage = function() { 

      var d = new Date(); 
      var g = new Date(); 
      d = d.toLocaleTimeString().replace(/:\d+ /, ' '); 
      g = g.toLocaleTimeString().replace(/:\d+ /, ' ') + new Date(); 





      $scope.sendMessages = firebase.database().ref('/messages/' + discussion).push({ 
      userId: myId, 
      text: $scope.data.message, 
      time: d, 
      timestamp: g 
      }); 

      console.log($scope.messages); 

      delete $scope.data.message; 
      $ionicScrollDelegate.scrollBottom(true); 

     }; 

     $scope.inputUp = function() { 
      if (isIOS) $scope.data.keyboardHeight = 216; 
      $timeout(function() { 
      $ionicScrollDelegate.scrollBottom(true); 
      }, 300); 

     }; 

     $scope.inputDown = function() { 
      if (isIOS) $scope.data.keyboardHeight = 0; 
      $ionicScrollDelegate.resize(); 
     }; 

     $scope.closeKeyboard = function() { 
      // cordova.plugins.Keyboard.close(); 
     }; 
     $scope.data = {}; 
     $scope.myId = myId; 
     $scope.otherId = otherId; 
     $scope.messages = []; 



     }) 

    }]); 

Любая идея?

+1

'{самоуправления: message.userId === MyId, другой: message.userId === otherId}' - даже двойные '' == бы сделать, но не отдельные '= '! Единый '=' означает назначение, '==' или '===' означает проверку равенства. –

+0

Опубликовать его как решение, потому что: он сработал! Я не могу поверить, что я ЭТО устал. Спасибо ! – FrenchyNYC

ответ

2

Вы используете единственное равенство = в выражении ng-class:

<li ng-class="{self: message.userId = myId, other: message.userId = otherId}"> 

Это назначение, не тест как задумано! Используйте двойное или тройное равенство:

<li ng-class="{self: message.userId === myId, other: message.userId === otherId}"> 

 Смежные вопросы

  • Нет связанных вопросов^_^