私はionicを使用していますが、次のビューがあります:
<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とパスワードは未定義であると言われます。 Angular and Ionicなので、これはおそらくn00bの間違いであることがわかります...
私は最近まったく同じ問題を抱えていましたが、おそらく解決策です: https://stackoverflow.com/a/22768720/552936
変更された引用:
"ng-modelを使用する場合、そこにドットが必要です。"
モデルポイントを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">
このコードを確認してくださいこれは私のために働いています:
<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);
}
}]);
コントローラで$ 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);
}
}]);
ちょっとジャン、あなたのコードがここで動作しているのを見てください
<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 || ''));
}
}]);
$scope.user = {};
$scope.submitForm = function (isValid) {
if (($scope.user.name || '').length > 0){ //Code }
}