6

入力内で ENTER を押したときにボタンのクリック イベントを発生させたいのですが、AngularJS では非常に困難です。

私の見解(簡略化、更新):

<!doctype html>
<html lang="en" ng:app="test">
    <head>
        <meta charset="utf-8" />
        <title>Test</title>
        <link rel="stylesheet" href="css/app.css" />
    </head>
    <body ng-controller="TestController">
        <button ng-click="onButton1Click()" class="btn1">Click Me</button>
        <button ng-click="onButton2Click()" class="btn2">Don't click me</button>
        <script src="lib/jquery/jquery.js"></script>
        <script src="lib/angular/angular.js"></script>
        <script src="js/testcontroller.js"></script>
    </body>
</html>

このビューの私のコントローラー:

'use strict';

angular.module('test', [])
.controller('TestController', ['$scope',
    function($scope) {

        $scope.onButton1Click = function() {
            alert("Hello");
        }

        $scope.onButton2Click = function() {
            $('.btn2').click();
        }
}])

すべてのコードをこれに単純化しました。btn2をクリックすると、このエラーが発生します

$apply はすでに進行中です

いいえ、$scope.onButton1Click()直接呼び出すことはできません。btn1クリックをシミュレートする必要があります。

4

3 に答える 3

13

あなたが言及した

入力内で ENTER を押したときにボタンのクリック イベントを発生させる

したがって、フォームを作成できると想定しても問題ない場合は、以下に示すようにng-submitを使用することをお勧めします。

<form ng-submit="clickEventFunction()">
  <input type="text"/>
  <button type="submit">Click</button>
</form>

Note ボタンのタイプはsubmitにする必要があります。

于 2013-04-19T14:58:24.037 に答える
3

これを理解するのにしばらく時間がかかりました(多くのフィドル)。

<form id="nowsorting" ng-submit="getData(sc_user)">Now sorting the Soundcloud likes of <input type="text" ng-model="sc_user"><input type="submit" value="Sort"></form>

フォームを作成し、ng-submit を使用してイベント (おそらく関数) を発生させます。

次に、2 つの入力 (1 つは「テキスト」、もう 1 つは「送信」) を作成します。

次にEnterを押すと、ng-submitイベント/関数が起動します。

于 2014-06-10T23:21:49.733 に答える
1

$scope.onButtonClick() を呼び出すだけでよいと思います

このプランカーをチェックしてください

$scope.onKeyPress = function($event) {
   if ($event.keyCode == 13) {
      $scope.onButtonClick();
   }
};
于 2013-04-18T11:24:38.813 に答える