AngularJS-使用参数调用ng submit
我正在使用angular和passport进行用户身份验证;我试图在保存表单时传递登录的用户ID,但无法使其正常工作。 我的代码非常简单:AngularJS-使用参数调用ng submit,angularjs,passport.js,Angularjs,Passport.js,我正在使用angular和passport进行用户身份验证;我试图在保存表单时传递登录的用户ID,但无法使其正常工作。 我的代码非常简单: site.jade: div(ng-controller='sitesController') h1 #{user.local.email} form.(ng-submit="createSite(user)") label Site Name input.(type="text" ng-model="sit
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中),即使我能够显示电子邮件
有什么想法吗
谢谢您的表单应该如何知道
用户是什么?它未定义的原因是您尚未定义它。为什么不这样做呢
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
与函数外部的值不同。其原因是,当函数定义中使用user
的值作为参数时,试图调用该值——就像您在console.log(user)
语句中所做的那样——实际上是说“console.log传递到此函数中的值”。如果您已经知道这一点,请原谅,但在JavaScript中,函数参数仅作为调用函数时使用的值的引用
这里有一点。您的意思是在不发出额外的$http
请求的情况下执行此操作吗?表单和用户之间的连接在哪里?显示的代码片段似乎不连贯。什么是siteName
?我有一个名为Site的模型,它包含siteName和其他名称,但我认为这与此无关(?)。siteController.js是上面ng控制器引用的控制器实现。将user.local.email
放入createSite
函数时会发生什么?无论哪种方式,如果user
绑定到$scope
对象,您就不用担心从html中传入值,而是console.log($scope.user)
,它应该/将会工作。感谢您的详细回答。也许我在你的回答中遗漏了什么;我不想用太多的代码使我的问题过于复杂。正如我所说,我能够打印用户电子邮件(参见h1标签)。您的代码无法解决我的问题,因为我需要将用户ID传递给createSite函数。请原谅我的混淆。当用户到达表单时,他们是否已经登录?