我无法从控制器[AngularJS]

时间:2016-10-21 19:54:07

标签: javascript html 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>

Angular 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);
                        });
        }
}]);

每次我在console.log上使用$ scope.email或密码。它抛出一个未定义的错误。我刚刚开始角度,我不知道为什么没有得到模型,我认为我的代码是正确的。你能给予的任何帮助我都会感激不尽。

1 个答案:

答案 0 :(得分:0)

来自Angular网站:

请注意,novalidate用于禁用浏览器的本机表单验证。

除非传递输入字段的验证,否则不会设置ngModel的值。例如:电子邮件类型的输入必须具有user @ domain形式的值。

参考:https://docs.angularjs.org/guide/forms

因此它可能是空白的原因是它不是有效的电子邮件。

您可以查看他们的演示文稿了解电子邮件类型并查看其实际效果。

我建议添加:

{{email}}
<br>
{{password}}

在你的html中控制器的HTML范围内,用于你自己的调试。

祝你好运。