【发布时间】:2015-12-22 03:25:06
【问题描述】:
几周前我开始了 AngularJS 编程。我想创建我的第一家工厂,但我对正在发生的事情感到困惑。
工厂:
var services =angular.module('services', ['ngResource']);
services.factory('UserSession',['$resource',function($resource) {
var user = {};
var loggedIn = false;
var details={initstate:'for demo purpose'};
user.authenticate = function(uname,pwd) {
var apiauthentification = $resource('/api/authenticate');
var tmp={
username:uname,
password:pwd
};
var auth = apiauthentification.save(tmp, function(){
console.log(auth);
if (auth.success){
isLoggedIn=true;
}
details=auth;
})
};
user.getDetails = function(){
return details;
};
user.isLoggedIn = function() {
return loggedIn;
};
return user;
}]);
控制器:
app.controller('LoginCtrl',['$scope','$resource','$location','UserSession',function($scope,$resource,$location,UserSession){
$scope.login = function (){
var tmp = UserSession.authenticate($scope.username,$scope.password);
console.log('UserSession.isLoggedIn():'+UserSession.isLoggedIn());
console.log ('Result authenticate:'+tmp);
console.log('UserSession.getDetails():');
console.log(UserSession.getDetails());
};
}]);
登录.html
<h3>Login page</h3>
<form>
<label>Username</label>
<input class="form-control" name="username" ng-model="username" required></input>
<label>Password</label>
<input class="form-control" name="password" ng-model="password" required></input>
<button ng-click="login()">
Test login
</button>
<label>result</label>
<input class="form-control" name="loginresult" ng-model="logresult"></input>
</form>
控制台:
UserSession.isLoggedIn():false
Result authenticate:undefined
UserSession.getDetails():
Object {initstate: "for demo purpose"}
g {success: false, msg: "Authentification failed. User not found", $promise: d, $resolved: true}
$promise: d
$resolved: true
msg: "Authentification failed. User not found"
success: false
__proto__: g
问题:
1- 为什么我的 tmp 变量未定义?
2- 我想我需要使用回调函数,但是如何设置呢?
【问题讨论】:
-
因为没有
UserSession.authenticate()这样的功能。您需要致电UserSession.user.authenticate()
标签: angularjs