Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从resolve方法内部更新作用域?_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

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=''