Почему предупреждение отображается два раза при нажатии кнопки?

Не могли бы вы рассказать мне, почему предупреждения отображаются два раза при нажатии кнопки?

вот мой плункер 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")
        };

    }]);

});

Ответ 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'
]

});

Ответ 2

Исправлена ​​проблема, что вы использовали устаревшую минитипированную версию ионной и requirejs без ограничений.

Просто измените свою ионную версию на - http://code.ionicframework.com/1.0.0/js/ionic.bundle.js

и requireJs для RequireJS 2.1.17

он отлично работает... измените версию в своей скрипке

Ответ 3

Цикл дайджест работает как минимум два раза по угловым. Таким образом, вероятно, причина для предупреждения появляется два раза - цикл дайджеста.

Но другие сказали изменить версию, и вы получите оповещение только один раз. Но если вы не хотите менять версию, это обходное решение:

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

рабочая демонстрация

Этот метод позволяет вызывать функцию только один раз. Это может быть полезно для тех, кто хочет остановить цикл дайджест.