2015-09-04 63 views
0

我想在我的聊天系統中發送消息後清除輸入,但範圍不想更新。將其設置在$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:

<textarea ng-enter="sendMessage(chat, newMessage)" ng-model="newMessage"></textarea> 

我該如何解決這個問題?

+0

您需要將範圍值(如$scope.message)設置爲''您究竟在哪裏嘗試更新範圍? newMessage沒有綁定在作用域上,它看起來像一個普通變量 –

+1

顯示你的HTML輸入。 – dfsq

+0

@dfsq更新的問題。 –

回答

0

創建您的作用域的新messageObject:

$scope.msgObject = {}; 

在你的HTML,這個新對象

<input type="text" ng-model="msgObject.message"> 

在你SendMessage函數中的綁定輸入一個屬性,而不是使用參數,使用來自$ scope.msgObject的消息

最後在'then'函數中清除您的$scope.msgObject.message。由於綁定你的html輸入字段也將清除。

0

在側面你then,您可以使用:

.then(function() { 
    newMessage = ''; 
}) 

這裏newMessage是一個局部變量匿名then功能。如果您使用<input ng-bind="message">

+0

我知道,他們都沒有工作。 –