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

时间:2015-06-25 05:54:50

标签: angularjs angularjs-directive angularjs-scope ionic-framework require

您能否告诉我为什么警告会在按钮点击时显示两次?

这是我的傻瓜 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")
        };

    }]);

});

3 个答案:

答案 0 :(得分:1)

如果您使用较新版本的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'
]

});

答案 1 :(得分:0)

问题已解决,您已使用过时的缩小版离子和requirejs非缩小版。

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

和requireJs RequireJS 2.1.17

它工作得很好......改变你小提琴中的版本

答案 2 :(得分:0)

摘要周期至少由angularjs运行两次。因此,警报出现两次的原因可能就是消化周期。

但是其他人说要更改版本,你只能拨打一次警报。但是,如果您不想更改版本,则需要解决此问题:

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

working demo

此方法仅允许您调用一次函数。对于那些想要停止消化循环的人来说,这可能会有所帮助。