24

ng-click を使用していますが、SPAN タグに適用すると 2 回起動します。

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>

コントローラ

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

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

一度だけ発火する必要があります。これが起こっている理由と修正方法を見つけるにはどうすればよいですか?

4

19 に答える 19

29

あなたが提供したコードは、イベントを 2 回発生させません。

http://jsfiddle.net/kNL6E/ (クリックSave)

おそらく、Angular を 2 回含めましたか? これを行うと、次のように 2 つのアラートが表示されます。

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

于 2013-09-10T02:03:21.950 に答える
7

誰かが同じ問題を抱えている場合: これは私の問題でした:

<a type="submit" ng-click="login()">submit login<a>

type="submit"と の両方ng-click="login()"が、コントローラーで login() メソッドをトリガーしました。

したがって、 type=submit または ng-click ディレクティブのいずれかを使用してください

于 2015-12-17T13:37:23.110 に答える
3

動的に追加された要素に対して $compile をサイクル内で 1 回だけではなく数回誤って呼び出したときに発生しました。一度だけコンパイルすると、この影響がなくなりました。

于 2015-11-17T21:56:43.293 に答える
2

<button ng-click='clickHandler()'><a ng-click='clickHandler()'>に変更し、イベントが一度だけ発生するようになりました

于 2016-06-16T08:30:56.537 に答える
1

私は少しダミーで、これを持っていました:

<li data-shape="amethyst" ng-click="toggleGem('amethyst')">
    <label></label>
    <i class="amethyst"></i>Amethyst
    <input type="checkbox" name="gem_type" id="gem-amethyst" value="amethyst" />
</li>

クリック イベントが 2 回トリガーされていました。ng-click を label 要素に移動しましたが、期待どおりに機能しています。

<li data-shape="amethyst">
    <label ng-click="toggleGem('amethyst')"></label>
    <i class="amethyst"></i>Amethyst
    <input type="checkbox" name="gem_type" id="gem-amethyst" value="amethyst" />
</li>
于 2016-11-25T20:39:49.603 に答える