Подтвердить что ты не робот

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

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

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

    }]);

});
4b9b3361

Ответ 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;
   }
 };

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

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