【问题标题】:AngularJS Full Stack form Submit IssueAngularJS 全栈表单提交问题
【发布时间】:2014-02-01 17:41:34
【问题描述】:

我已经在 yeoman+express+angularjs 全栈应用程序中提供的默认 login.html 页面的额外输入字段中包含了

 <form class="form" name="form" ng-submit="login(form)" novalidate>
`<input type="text" name="pname" class="form-control" ng-model="user.pname" >` 
 <input type="text" name="email" class="form-control" ng-model="user.email">
<input type="password" name="password" class="form-control" ng-model="user.password">
<p class="help-block" ng-show="form.pname.$error.required && form.email.$error.required &&              form.password.$error.required  && submitted"><button type="submit" lass="btn btn-info">Sign in</button></div>          

但是 pname 没有得到空白验证,我也无法在我的控制器中获取 pname 的值

angular.module('ratefastApp')
  .controller('LoginCtrl', function ($scope, Auth, $location) {
    $scope.user = {};
    $scope.errors = {};

    $scope.login = function(form) {
      $scope.submitted = true;

      if(form.$valid) {
        Auth.login({
          email: $scope.user.email,
          password: $scope.user.password,
          practicename : $scope.user.pname
        })
        .then( function(err) {
          $location.path('/');
        })
        .catch( function(err) {          
          err = err.data;
          $scope.errors.other = err.message;
        });
      }
    };
  });

pname 未定义.. 在 express 控制器中,我的 express 控制器代码如下

exports.login = function (req, res, next) { var

practiceName = String(req.body.pname); var 用户名 = 字符串(req.body.email); var userPass = String(req.body.password); };

------------- route.js app.post('/api/session', session.login); -------- html同上

在控制台我得到 practiceName 未定义

【问题讨论】:

  • 你传递的是practicename,而不是pname

标签: angularjs


【解决方案1】:

尝试将required 放在您需要的字段上:

<input type="text" name="pname" class="form-control" ng-model="user.pname" required>

DEMO

您在快速控制器中为您的pname 获得undefined 的原因是因为您传递的是practicename,而不是pname

Auth.login({
      email: $scope.user.email,
      password: $scope.user.password,
      practicename : $scope.user.pname //you use practicename here.
 })

尝试替换:

practiceName = String(req.body.pname); 

与:

practiceName = String(req.body.practicename); 

【讨论】:

  • 但是参数 pname 我没有通过使用 req.body.pname 进入快速控制器怎么办,其余参数可用 req.body.email , req.body.password
  • @sergioramosiker:您需要提供更多代码,我在DEMO中复制了您当前的代码,您可以看到pname可用。
  • 控制器端代码exports.login = function (req, res, next) { var practiceName = String(req.body.pname); var userName = String(req.body.email); var userPass = String(req.body.password); }; ------------- route.js app.post('/api/session', session.login); ------- html 在控制台中与上面相同,我得到 practiceName 未定义
  • @sergioramosiker:你能用这些信息更新你的问题吗?它更易于查看,也可以帮助未来的访问者。
猜你喜欢
  • 2018-01-19
  • 2010-10-09
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2021-05-13
相关资源
最近更新 更多