AngularJS ng-click触发两次

Rav*_*Ram 23 javascript angularjs

我正在使用ng-click,当我将它应用于SPAN标记时会触发两次.

HTML

<div ng-app="regApp" ng-controller="RegistrationCtrl" data-ng-init="GetEventDetail()" ng-show="data.EventName">

    <h2>Registration for {{data.EventName}}</h2>
    <span class="btn" id="btnSave" ng-click="PostRegistration()">Save </span>

</div>
Run Code Online (Sandbox Code Playgroud)

CONTROLLER

var app = angular.module('regApp', ['ui']);

app.controller('RegistrationCtrl', function ($scope, $http) {
    $scope.PostRegistration = function () {
    alert('click '); <--- fires twice
    /// some code here -- 
};
Run Code Online (Sandbox Code Playgroud)

它应该只发射一次.我怎么能找到为什么会这样,以及如何解决它?

Lan*_*don 29

您提供的代码不会触发事件两次:

http://jsfiddle.net/kNL6E/(点击Save)

也许你两次包括Angular?如果您这样做,您将收到两个警报,在此处演示:

http://jsfiddle.net/kNL6E/1/

  • 我没有看到上面代码之间的区别.你是怎么两次把Angular包括在内的? (7认同)
  • @windchime,在第二个小提琴中,angular包含在"Frameworks&Extensions"下,第二次包含在"External Resources"下 (3认同)

小智 16

我遇到了类似的问题,但在我的文件中找不到Angular两次.

我使用ajax调用来加载特定的表单布局,因此我需要使用$compile在插入的DOM上激活Angular.但是,我正在使用$compile我的指令$element,它附有一个控制器.原来这个"包括"控制器两次,导致两个触发器ng-clickng-submit.

我通过$compile直接使用插入的DOM而不是我的指令来解决这个问题$element.


seb*_*bap 10

使用相同的问题

<a ng-click="fn()"></a>
Run Code Online (Sandbox Code Playgroud)

fn被叫了两次

使用按钮固定它:

<button ng-click="fn()"></button>
Run Code Online (Sandbox Code Playgroud)


Ros*_*non 9

这可能是模糊不清的,但我已经开了ng-click两次因为我运行了BrowserSync,这会将我的输入反映到我在另一个窗口中打开的选项卡中,从而使我的所有点击倍增.要解决,我禁用了"ghostMode":https://www.browsersync.io/docs/options/


Ela*_*son 7

我通过删除我的ngsubmit处理程序解决了这个问题,因为我不需要它.我正在监视变更事件并使用SignalR近乎实时地更新屏幕.

我也是一个表格,ngSubmitAngularJS文档声明:

警告:小心不要同时使用ngClickngSubmit处理程序一起导致"双重提交" .有关何时可能触发的详细讨论,请参阅表单指令文档ngSubmit.


phy*_*sox 7

如果有人有同样的问题:这是我的问题:

<a type="submit" ng-click="login()">submit login<a>
Run Code Online (Sandbox Code Playgroud)

两者的type="submit"ng-click="login()"引发的登录() -方法在我的控制器.

所以只需使用type = submit或ng-click指令即可


小智 5

如果其他答案没有帮助,请确保在Batarang中禁用AngularJS分析(如果您已经安装了它).

这让我点击两次为我开火.

在此输入图像描述