私は、学習目的で電子商取引サイトを開発しています。コントローラからng-modelにアクセスできない[AngularJS]
HTML:
<div class="container">
<form class="log-in-form" ng-controller="ControllerLogin">
<div class="form-group">
<label for="loginEmail">Email address</label>
<input type="email" class="form-control" id="loginEmail" placeholder="Email" ng-model="email">
</div>
<div class="form-group">
<label for="loginPass">Password</label>
<input type="password" class="form-control" id="loginPass" placeholder="Password" ng-model="password">
</div>
<button class="btn btn-default" ng-click="authenticate()">Login</button>
</form>
</div>
角度のjavascript
app.controller('ControllerLogin', ['$scope', '$http', 'ServiceLogin', function ($scope, $http, ServiceLogin) {
$scope.authenticate = function() {
console.log($scope.email);
ServiceLogin.auth($scope.email, $scope.password)
.success(function (data) {
alert(data);
});
}
}]);
私は$のscope.email、またはパスワードをCONSOLE.LOGたびに。それは未定義のエラーを投げます。私はちょうど角度を開始していると私はなぜモデルを取得していないか分からない、私は自分のコードが正しいと思う。あなたが与えることができるどんな助けでも私は感謝しています。ブラウザのネイティブフォームの検証を無効にするために使用されNOVALIDATE
注:アンギュラサイトから
hmm..有効なメールが送信されるまでは設定されていません。入力を 'text'に変更すると、実際の電子メールを入力するか動作します。私はフォームに 'novalidate'を置こうとしましたが、それは何もしませんでした。 – Ronnie
私が知る限り、 '$ scope.email'と' $ scope.password'はフォームフィールドがそれらの値を設定するまでは未定義です。起こっているように見えるのは、ページのコントローラが読み込まれると、 '$ scope.email'と' $ scope.password'の両方が初期化されておらず、したがって未定義であるということです。それらを空の文字列に初期化することができます。 ($ scope.email = '' ";' $ scope.password = "") – frishi
これは無効な電子メールの問題でした。 'type = submit' attr。ありがとうございました! –