为什么单击按钮时警报显示两次?

Why is the alert displayed two times on button click?

您能告诉我为什么单击按钮时警报会显示两次吗?

这是我的笨蛋 http://plnkr.co/edit/vtmYAG2d1gmnPjnxovJw?p=preview

/*global define, console */

define(['app'], function(app){
   'use strict';

    app.controller('LoginCtrl', ['$scope', function($scope) {
        $scope.login = function () {
          alert("Login is clicked")
        };

    }]);

});

如果您使用更新版本的 Ionic,它会起作用: http://plnkr.co/edit/K2BLrUyOEeoDxHc9LyTl?p=preview

我用了http://code.ionicframework.com/1.0.0/js/ionic.bundle.min.js

你的例子使用 http://code.ionicframework.com/1.0.0-beta.1/js/ionic.bundle.min.js

requirejs.config({
paths: {
    ionic:'http://code.ionicframework.com/1.0.0/js/ionic.bundle.min',
},
shim: {
    ionic : {exports : 'ionic'}
}, priority: [
    'ionic'
],

deps: [
    'bootstrap'
]

});

问题已修复,您使用了过时的缩小版 ionic 和 requirejs 非缩小版。

只需将您的离子版本更改为 -- http://code.ionicframework.com/1.0.0/js/ionic.bundle.js

并要求 RequireJS 2.1.17

它工作正常...在您的 fiddle

中更改版本

angularjs 摘要周期至少运行两次。所以,警报出现两次的原因可能是摘要周期。

但是其他人说换个版本,你只会收到一次警报。但是如果你不想改变版本,有一个解决方法:

$scope.login = function () {
   alert("Login is clicked");
   $scope.login = function(){
     return false;
   }
 };

working demo

此方法只允许您调用函数一次。这可能对其他想要停止摘要循环的人有所帮助。