我目前正在尝试在 AngularJS 中创建某种模式对话框来登录用户。因此我使用官方ui-bootstrap上的模板创建了一个小例子页。为了对用户进行身份验证,凭据将发送到 REST 服务。为了简单起见,我使用了一个虚拟对象来模拟 http 调用。接收到的数据应该传递回调用模式对话框的 Controller ,但不知何故我的处理不起作用,并且我收到一个错误,表明以下代码是错误的:
testLoginService.loginUser(user.name, user.pass)
.then(function (sessionId){
user.session = sessionId;
});
这是控制台中发生的错误:
Error: testLoginService.loginUser(...) is undefined
$scope.ok@http://localhost:8080/LoginModal/example.js:32:2
Parser.prototype.functionCall/<@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:10567:15
ngEventDirectives[directiveName]</<.compile/</</<@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:18627:17
$RootScopeProvider/this.$get</Scope.prototype.$eval@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:12412:16
$RootScopeProvider/this.$get</Scope.prototype.$apply@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:12510:18
ngEventDirectives[directiveName]</<.compile/</<@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:18626:15
createEventHandler/eventHandler/<@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:2780:7
forEach@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:330:11
createEventHandler/eventHandler@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js:2779:5
Here是我在 plunkr 上的代码。是什么导致我的代码出现错误以及如何修复它?最后,我想处理从 loginService 接收到的数据,并在用户界面上显示 sessionID 或其他用户特定的数据。
提前致谢
最佳答案
尝试以下操作,
使用回调函数
testLoginService.loginUser(user.name, user.pass,function (data){
user.session = data.id;
});
ajax请求
this.loginUser = function(user, password,callback)
{
var wsUrl = "http://jsonplaceholder.typicode.com/posts";
var soapRequest = {
title: user,
body: password,
userId: 1
}
var config = {
headers : {
}
}
$http.post(wsUrl, soapRequest, config)
.success(callback)
.error(function (data, status, header, config) {
alert(req.responseText + " " + status);
})
};
关于javascript - 从模态调用 AngularJS Promise 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739565/