1

当用户在输入我textbox的内容后按下返回时,应该将内容推送到其他模型并且textarea应该清除:

HTML

<div ng-controller="MyCtrl">
  <ul><li ng-repeat="msg in messages">{{msg.body}}</li></ul>
  <textarea ng-model="msg" ng-keydown="addMessage($event)"></textarea>
</div>

JS

function MyCtrl($scope) {
  $scope.messages = [];
  $scope.addMessage = function(e) {
    if (e.keyCode != 13) return;
    $scope.messages.push({body: $scope.msg});
    $scope.msg = "";
  }
}

但是,$scope.msg = ""留下换行符,因此下一条消息从空的第二行开始textarea。我怎样才能完全清除它并在第一行开始下一个输入?这是一个要演示的小提琴,这是一个与角度无关的问题

4

1 回答 1

3

一旦你的事件处理程序被执行(并且你清除了文本区域),默认的事件处理机制就会被触发——它会从按下回车键添加换行符。你应该在你的 handler( e.preventDefault()) 中阻止默认设置:fiddle

编辑:似乎您已经提到的链接中已经回答了这个问题。

于 2013-11-06T06:06:56.427 回答