Ионный ng-щелчок не срабатывает

#javascript #angularjs #ionic-framework #firebase #firebase-authentication

# #javascript #angularjs #ионный фреймворк #firebase #firebase-аутентификация

Вопрос:

Я играю с ионным приложением, используя серверную часть Firebase. Моя проблема в том, что ng-click="loginUser(user)" это не срабатывает.

Консоль показывает выход из Auth.$onAuthStateChanged() системы и ничего больше. Нажатие кнопки не отображает Clicked! журнал.

Вот мой журнал консоли.

Вот моя страница входа в систему:

 <ion-view title="Login" hide-nav-bar="true" nav-transition="none" id="page8" style="background-color:#FFC900;">
<ion-content padding="true" class="manual-ios-statusbar-padding">
    <div id="login-container6">
        <div>
            <img src="img/PqmLrUhgT9WL19CElH4P_skc_logo.png" width="85" height="auto" style="display: block; margin-left: auto; margin-right: auto;">
        </div>
        <div class="spacer" style="height: 40px;"></div>
        <form id="login-form5" class="list">
            <label class="item item-input" id="login-input5">
                <span class="input-label">Email</span>
                <input type="email" placeholder="" ng-model="user.email">
            </label>
            <label class="item item-input" id="login-input6">
                <span class="input-label">Password</span>
                <input type="password" placeholder="" ng-model="user.password">
            </label>
            <div class="spacer" style="height: 40px;"></div>
            <button id="login-button3" class="button button-light button-block" ng-click="loginUser(user)">Log in</button>
        </form>
    </div>
</ion-content>
 

и вот контроллер входа в систему:

 .controller('loginCtrl', ['Firebase', 'Auth', '$stateParams', '$state', '$ionicModal', '$location', function (Firebase, Auth, $scope, $stateParams, $state, $ionicModal, $location) {
    Auth.$onAuthStateChanged(function (authData, $location) {
        if (authData) {
            console.log("Signed in as :", authData.email);
            $scope.loggedInUser = authData;

            $state.go('tabsController.search')
        } else {
            console.log("Signed out");
            $scope.loggedInUser = null;
        }
    });

    // Log in
    $scope.loginUser = function (user) {
        console.log('Clicked!');
        if ($scope.isIncorrectValue(user.email) || $scope.isIncorrectValue(user.password)) {
            $scope.error = "You filled out the form wrong...";
        } else {
            Auth.$signInWithEmailAndPassword(user.email, user.password)
                .then(function (authData) {
                    $scope.loggedInUser = authData;
                    console.log('AuthData ='   authData);
                }).catch(function (error) {
                    $scope.error = ""   error;
                });
        }
    }
}])
 

РЕДАКТИРОВАТЬ — вот маршрутизация:

 angular.module('app.routes', [])

.config(function ($stateProvider, $urlRouterProvider) {

... // Other Pages

.state('login', {
    url: '/login',
    templateUrl: 'templates/login.html',
    controller: 'loginCtrl'
})

... // Other Pages

$urlRouterProvider.otherwise('/login')

});
 

Комментарии:

1. Вы поставили ng-controller?

2. назначили ли вы LoginCtrl своему представлению?

3. У меня есть, я получаю журнал выхода из консоли из LoginCtrl.

4. вы использовали модель пользователя в своем представлении. вы назначили $scope.user модель в вашем контроллере?

5. Вы можете оставить код, в котором вы объявляете контроллер для этого шаблона в specific?

Ответ №1:

Моя проблема была в объявлениях LoginCtrl. У меня не было $scope и было $state дважды, без ошибок.