Javascript 如何从resolve方法内部更新作用域?
我试图在聊天系统中发送消息后清除输入,但作用域不想更新。在Javascript 如何从resolve方法内部更新作用域?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我试图在聊天系统中发送消息后清除输入,但作用域不想更新。在$apply、$digest或$timeout中设置它不起作用,因为摘要循环已经在运行 以下是函数: $scope.sendMessage = function(chat, newMessage) { var messageObj = { by: $scope.uuid, message: newMessage, timestamp: Date.now() } f
$apply
、$digest
或$timeout
中设置它不起作用,因为摘要循环已经在运行
以下是函数:
$scope.sendMessage = function(chat, newMessage) {
var messageObj = {
by: $scope.uuid,
message: newMessage,
timestamp: Date.now()
}
fbCrud.push('chats/' + chat.$id + '/history', messageObj)
.then(function() {
newMessage = '';
})
.catch(function(err) {
setStatus(false, 'Unable to send message', true);
});
};
这是我的文本区:
<textarea ng-enter="sendMessage(chat, newMessage)" ng-model="newMessage"></textarea>
如何修复此问题?在您的作用域中创建一个新的messageObject:
$scope.msgObject = {};
在HTML中,将输入绑定到此新对象中的属性
<input type="text" ng-model="msgObject.message">
在sendMessage函数中,不要使用参数,而是使用$scope.msgObject中的消息
最后,在“then”函数中,清除
$scope.msgObject.message
。由于绑定,您的html输入字段也将被清除。在您的中,然后使用:
.then(function() {
newMessage = '';
})
这里的newMessage
是一个局部变量位于匿名then
函数中。如果使用
,则需要将作用域值设置为'
,例如$scope.message
,具体在哪里更新作用域?newMessage未绑定在作用域上,它看起来像一个普通变量显示HTML以供输入。@dfsq更新了问题。它应该是$scope.newMessage=''代码>