У меня проблема здесь, где правильный $ 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>
Я думаю, после запуска 'QB.chat' событий вам нужно запустить цикл дайджеста внутри t здесь callback .. –
Можете ли вы подробнее объяснить? – Femtosecond
События AFAIK 'QB.chat' запускаются за пределами углового контекста .. так что цикл дайджеста не будет запущен для них. Чтобы сделать привязку работоспособной, вам нужно использовать' $ scope. $ Apply() 'внутри каждого функция обратного вызова событий, которая заставит ее работать –