【发布时间】:2015-11-27 07:01:59
【问题描述】:
我的视图上有以下标签:
<label id="error" class="error">{{ login.error }}</label>
使用以下路由/控制器设置 (sn-p)
$routeProvider.
when('/login',
{
controller : 'LoginController',
controllerAs: 'login',
templateUrl : 'app/views/auth/login.html'
}).
这里附上一些控制器代码:
function LoginController(user, auth, $location)
{
var self = this;
self.error = 'blah'; // works
function handleRequest(res)
{
if (typeof res != 'undefined')
{
var token = res.data ? res.data.token : null;
if (token && auth.isAuthed())
$location.path('/layout');
if (res.status == 401)
{
return { status:res.status, statusText:res.statusText, error:res.data.error }
}
}
}
self.login = function(form)
{
self.error = 'blah'; // doesn't work
if(form.validate())
{
user.login(self.username, self.password)
.then(handleRequest, handleRequest)
}
}
我无法在方法中更新 login.error 值。 我也试过 $scope 和 $apply 无济于事。
下一期是
user.login(self.username, self.password) .then(handleRequest, handleRequest)
promise,在handleRequest方法中,我返回如下:
return { status:res.status, statusText:res.statusText, error:res.data.error }
我到底如何从履行的承诺中获得价值?
如果我将结果输出到控制台,我会得到以下信息:
我尝试与另一个 .then 等搞混,但无济于事。
编辑:
这似乎适用于检索承诺值:
self.login = function(form)
{
self.error = 'blah'; // doesn't work
if(form.validate())
{
var login = user.login(self.username, self.password)
.then(handleRequest, handleRequest)
login.then(function(response)
{
console.log(response);
});
}
}
我现在只需要弄清楚如何从方法中显示在视图中。
【问题讨论】:
-
你试过用
$scope.error代替self.error。 -
注入 $scope 并设置 $scope.error 似乎根本不起作用
标签: javascript angularjs promise