2013-04-18 101 views
6

我想在按下輸入內的ENTER時觸發按鈕的點擊事件,我發現AngularJS非常困難。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我得到這個錯誤

$正在進行

已經沒有申請,我不能直接調用$scope.onButton1Click(),我必須模擬BTN1點擊。

+0

是app:click-watched =「onButtonClick()」您寫的自定義指令? – ganaraj

+0

是的,這是一個自定義指令 – ali

+0

你可以把你的代碼放到一個笨蛋嗎? – ganaraj

回答

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-提交觸發事件(可能是一個函數)。

然後創建兩個輸入(一個是「文本」,另一個是「提交」)。

然後按回車應該觸發ng-submit事件/函數。

1

我想,你只需要打電話給你的$ scope.onButtonClick()

請檢查this Plunker

$scope.onKeyPress = function($event) { 
    if ($event.keyCode == 13) { 
     $scope.onButtonClick(); 
    } 
}; 
+1

這並不是真的「點擊」按鈕,它只是執行與點擊按鈕相同的JavaScript代碼。它有點不同,因爲您點擊該按鈕上的任何其他偵聽器都不會被觸發。 – Randyaa

13

您按ENTER鍵時,裏面提到

消防按鈕的點擊事件一個輸入

所以如果是sa fe假設你可以有一個我更喜歡使用的表格,如下所示。

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

注按鈕類型應該是提交

+0

這是正確的答案 – JT703