2015-06-12 3 views
0

У меня проблема здесь, где правильный $ scope.testMessage не передается в QB.chat.send ...Угловая Область не работает в функции OnClick

Прямо сейчас, что происходит при вводе новой информации в поле ввода, привязанное к $ scope.testMessage, является обновлением {{testMessage}} в HTML, чего мы ожидаем, но при перфорации кнопки, привязанной к sendMessageClick(), это новое значение не передается в функцию - в нее передается старое значение, здесь заданное значение «Сыр». Даже если он был изменен на «StinkingFrenchCheese», и это отражается в части {{testMessage}} в реальном HTML. Он все еще только передает «Сыр» в sendMessageClick.

$scope.testMessage = "Cheese"; 
 
    console.log($scope.testMessage); 
 

 
    $scope.sendMessageClick = function() { 
 

 

 
    console.log("message = " + $scope.testMessage); 
 

 
    var user = $rootScope.user; 
 
    console.log('sendMessageclick'); 
 
    var countchew = "[email protected]"; //countchew 
 
    var starshipenterprise = "[email protected]"; //starshipenterprise 
 
    if (user == "countchew"){ 
 
     QB.chat.roster.confirm(starshipenterprise, function(){ 
 
     console.log("roster.confirm called"); 
 
     }); 
 
     QB.chat.roster.add(starshipenterprise, function() { 
 
     console.log("roster.add called"); 
 
     }); 
 
     var chewparams = {type: 'chat', name: 'testMessage', body: ($scope.testMessage), extension: {save_to_history: 1}}; 
 
     QB.chat.send(starshipenterprise, chewparams); 
 
    } else if (user == "starshipenterprise"){ 
 
     QB.chat.roster.confirm(countchew, function() { 
 
     console.log("roster.confirm called"); 
 
     }); 
 
     QB.chat.roster.add(countchew, function() { 
 
     console.log("roster.add called"); 
 
     }); 
 
     var starparams = {type: 'chat', name: 'testMessage', body: ($scope.testMessage), extension: {save_to_history: 1}}; 
 
     QB.chat.send(countchew, starparams); 
 
    } 
 

 
    };
<ion-view view-title="Chat"> 
 
    <ion-content> 
 

 
    <center class="padding-vertical">Chat 'em up</center> 
 
     
 
     <!-- Begin Login Form --> 
 
     <div class="list list-inset"> 
 

 

 
      <label class="item item-input"> 
 
      <input type="text" placeholder="User Name" ng-model="user.username"> 
 
      </label> 
 
      <label class="item item-input"> 
 
      <input type="text" placeholder="Password" ng-model="user.password"> 
 
      </label> 
 
      <button class="button button-full button-balanced" data-ng-click="signInClick()"> 
 
      Sign In 
 
      </button> 
 

 

 
      <label class="item item-input"> 
 
      <input type="text" placeholder="Input your message!" ng-model="inputMessage"> 
 
      </label> 
 
      <button class="button button-full button-balanced" data-ng-click="sendMessageClick()"> 
 
      Send your message 
 
      </button> 
 
      <button class="button button-full button-balanced" data-ng-click="getCurrentParseUser()"> 
 
      Get Current Parse User 
 
      </button> 
 
      <button class="button button-full button-balanced" data-ng-click="QBDisconnect()"> 
 
      Disconnect from QB chat 
 
      </button>  
 

 

 
      <p>The message is : {{testMessage}}</p> 
 
      <p>Debug area says : {{debug}}</p> 
 

 
      <label class="item item-input"> 
 
      <input type="text" placeholder="Give some text!" ng-model="testMessage"> 
 
      </label> 
 
      <button class="button button-full button-balanced" data-ng-click="sendMessageClick()"> 
 
      Send your message 
 
      </button> 
 

 
     </div> 
 
     <!-- End Login Form --> 
 

 
    </ion-content> 
 
</ion-view>

+0

Я думаю, после запуска 'QB.chat' событий вам нужно запустить цикл дайджеста внутри t здесь callback .. –

+0

Можете ли вы подробнее объяснить? – Femtosecond

+0

События AFAIK 'QB.chat' запускаются за пределами углового контекста .. так что цикл дайджеста не будет запущен для них. Чтобы сделать привязку работоспособной, вам нужно использовать' $ scope. $ Apply() 'внутри каждого функция обратного вызова событий, которая заставит ее работать –

ответ

2

Попробуйте передавая сообщение к по щелчку обработчиком:

<button class="button button-full button-balanced" data-ng-click="sendMessageClick(testMessage)"> 

Тогда ваш обработчик OnClick получить новое сообщение в качестве входных данных

$scope.sendMessageClick = function(msg) { 
+0

Мне нужно параметр, который не является жестко закодированным, но принимает входные данные из поля ввода – Femtosecond

+0

, он не является жестко закодированным, testMessage привязан к входу в качестве модели, не так ли? – orcaman

+0

кричит, да, вы правы! – Femtosecond

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