AngularJS - 使用参数调用ng-submit

时间:2014-09-27 19:50:16

标签: angularjs passport.js

我正在使用角度和护照进行用户身份验证;我正在尝试在保存表单时传递登录的用户ID,但却无法使其工作。 我的代码非常简单:

site.jade:

div(ng-controller='sitesController')
    h1 #{user.local.email}
    form.(ng-submit="createSite(user)")
        label Site Name
        input.(type="text" ng-model="siteName")
        button.btn.btn-primary(type="submit") Save


sitesController.js

$scope.createSite = function (user) {
        console.log(user); // user = undefined
}

用户总是'未定义'(在console.log中),即使我能够显示电子邮件。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:3)

您的表单如何知道user是什么?它未定义的原因是因为您还没有定义它。为什么不这样做呢?

site.jade:

div(ng-controller='sitesController')
    h1 #{user.local.email}
    form.(ng-submit="createSite()")
          //removed the argument from above.
        label Site Name
        input.(type="text" ng-model="siteName")
        button.btn.btn-primary(type="submit") Save


sitesController.js

$scope.createSite = function () {
        console.log($scope.siteName);
}

$scope.createSite()函数中,值user与函数OUTSIDE的值不同。这样做的原因是,当user的值被用作函数定义中的参数时,尝试调用该值 - 就像在console.log(user)语句中所做的那样 - 您基本上是在说& #34; console.log传递给该函数的值。"如果您已经知道这一点,请原谅我,但在JavaScript函数中,参数仅作为函数调用的值的引用。

这是一个小JSfiddle to illustrate my point