#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
дважды, без ошибок.