Ng-модель undefined в контроллере
Я использую ионный, и у меня есть следующее представление:
<ion-view hide-nav-bar="true" ng-controller="loginController" class="login-view">
<ion-content class="padding">
<div class="row row-center">
<div class="col">
<div id="logo"></div>
<form>
<div class="list">
<label class="item item-input">
<input type="text" placeholder="Membership No" ng-model="membershipNo">
</label>
<label class="item item-input">
<input type="password" placeholder="Password" ng-model="password">
</label>
</div>
<button class="button button-block button-positive button-login" ng-click="login()">
Login
</button>
</form>
</div>
</div>
</ion-content>
</ion-view>
И мой контроллер:
app.controller('loginController', ['$scope', '$localstorage',
function($scope, $localstorage) {
$scope.membershipNo;
$scope.password;
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.membershipNo +
"\n and password: " + $scope.password);
}
}
]);
Что я не понимаю, так это то, что когда я нажимаю кнопку, функция входа в систему вызывается правильно. Кроме того, если в контроллере я иду и устанавливаю $scope.membershipNo
на что-то вроде "Banana Pancake", представление фактически обновляется.
Тем не менее, когда функция входа в систему фактически выполняется, говорится, что membershipNo и пароль undefined. Я новичок в Angular и Ionic, поэтому я знаю, что это, вероятно, ошибка n00b...
Ответы
Ответ 1
У меня была точно такая же проблема в последнее время и это, вероятно, решение:
fooobar.com/questions/29275/...
Измененная цитата:
"Если вы используете ng-модель, у вас должна быть точка".
Сделайте свою модель точкой object.property
, и вам будет хорошо идти.
контроллер
$scope.formData = {};
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.formData.membershipNo +
"\n and password: " + $scope.formData.password);
}
Шаблон
<input type="text" placeholder="Membership No" ng-model="formData.membershipNo">
<input type="password" placeholder="Password" ng-model="formData.password">
Ответ 2
Пожалуйста, проверьте этот код. Это сработало для меня:
<div class="row row-center">
<div class="col">
<div id="logo"></div>
<form>
<div class="list">
<label class="item item-input">
<input type="text" placeholder="Membership No" ng-model="data.membershipNo">
</label>
<label class="item item-input">
<input type="password" placeholder="Password" ng-model="data.password">
</label>
</div>
<button class="button button-block button-positive button-login" ng-click="login()">
Login
</button>
</form>
</div>
</div>
и в вашем контроллере:
app.controller('loginController', ['$scope',
function($scope) {
$scope.data={};
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.data.membershipNo +
"\n and password: " + $scope.data.password);
}
}]);
Ответ 3
Вам нужно определить переменные $scope, как это в вашем контроллере:
$scope.membershipNo = '';
$scope.password = '';
Итак, ваш контроллер будет выглядеть так:
app.controller('loginController', ['$scope', '$localstorage',
function($scope, $localstorage) {
$scope.membershipNo = '';
$scope.password = '';
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.membershipNo +
"\n and password: " + $scope.password);
}
}]);
Ответ 4
Эй, Жан, Посмотрите, как работает ваш код
<ion-view ng-app="app" hide-nav-bar="true" ng-controller="loginController" class="login-view">
<ion-content class="padding">
<div class="row row-center">
<div class="col">
<div id="logo"></div>
<form>
<div class="list">
<label class="item item-input">
<input type="text" placeholder="Membership No" ng-model="membershipNo">
</label>
<label class="item item-input">
<input type="password" placeholder="Password" ng-model="password">
</label>
</div>
<button class="button button-block button-positive button-login" ng-click="login()">
Login
</button>
</form>
</div>
</div>
</ion-content>
</ion-view>
var app= angular.module("app",[]);
app.controller('loginController', ['$scope',
function($scope, $localstorage) {
$scope.membershipNo;
$scope.password;
$scope.login = function () {
alert("User logged in with membership no: " + ($scope.membershipNo || '') +
"\n and password: " + ($scope.password || ''));
}
}]);
Ответ 5
$scope.user = {};
$scope.submitForm = function (isValid) {
if (($scope.user.name || '').length > 0){ //Code }
}