Angularjs Ng提交文本区

Angularjs Ng提交文本区,angularjs,Angularjs,我有一个只有文本区域的表单。当用户点击文本区域中的enter键时,是否可以执行ng submit?我可以使用ng keyup来实现这一点,但我想知道是否有更好的解决方案 <form ng-show="messages.conversation" ng-submit="messages.reply()"> <textarea class="msg-textarea" ng-model="messages.replyText" ng-keyup="$e

我有一个只有文本区域的表单。当用户点击文本区域中的enter键时,是否可以执行
ng submit
?我可以使用
ng keyup
来实现这一点,但我想知道是否有更好的解决方案

<form ng-show="messages.conversation" ng-submit="messages.reply()">
  <textarea class="msg-textarea" ng-model="messages.replyText" 
            ng-keyup="$event.keyCode == 13 ? messages.reply() : null">
  </textarea>
  <button type="submit" value="submit" class="btn-primary btn-sm btn-block" 
          ng-click="messages.reply()">Reply
  </button>
</form>

回复

@EpokK曾经用以下代码解决了问题:

您需要添加一个
指令
,如下所示:

Javascript

app.directive('ngEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.ngEnter);
                });

                event.preventDefault();
            }
        });
    };
});
<div ng-app="" ng-controller="MainCtrl">
    <input type="text" ng-enter="doSomething()">    
</div>
HTML

app.directive('ngEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.ngEnter);
                });

                event.preventDefault();
            }
        });
    };
});
<div ng-app="" ng-controller="MainCtrl">
    <input type="text" ng-enter="doSomething()">    
</div>