我是AngularJs的新手,无法弄清楚这个问题。
我尝试改变范围内那种不起眼的变量。
.controller('AuthController', function($scope,Auth) {
$scope.submit = function() {
Auth.login($scope.username,$scope.password, function(result){
$scope.result = result
});
}
})
Auth是一个向服务器发出GET请求并获得响应的服务:
{ 'status': 1, 'message': "User does not found!"}
但我的变量不会在我的模板中刷新。当我把这个
$scope.result = { 'status': 1, 'message': "User does not found!"}
在函数$ scope.submit之外。它工作正常。
这是我的路线。
$stateProvider
.state('index', {
url: "/",
templateUrl: "/static/templates/_index.html",
})
我的模板是。
<div class="alert" >{{ result.message }}</div>
有人可以解释一下我做错了什么吗? 感谢。
这是我的服务。
function login(username, password, callback) {
return $http.post('/api/login/', {
username: username, password: password
}).success(callback);
}
插入后
Auth.login($scope.username,$scope.password, function(result){
$scope.result = result
console.log($scope.result);
我在我的萤火虫中看到了正确的数据。
对象{status = 1,message =&#34;找不到用户!&#34;}
$ $范围应用(); - 给我错误:[$ rootScope:inprog] http://errors.angularjs.org/1.4.0/ $ rootScope / inprog?p0 =%24digest
答案 0 :(得分:0)
您确定Auth.login()
没有回复承诺。看起来它想要,在这种情况下尝试......
Auth.login($scope.username, $scope.password)
.then(function(result){
$scope.result = result
});
很难说没有看到您的Auth服务。
答案 1 :(得分:0)
如果Auth.login()
返回promise
,您可以使用其then
函数来定义成功和错误处理程序,例如:
Auth.login($scope.username, $scope.password)
.then(function(result){// success handler
$scope.result = result
$scope.$apply();
},function(error){// error handler
console.log(error);
});
但是,如果它进行ajax
调用但未返回promise
,则可以使用$q
服务自行返回承诺。这是你如何做到的:
var deferred = $.defer();
deferred.resolve($.ajax({
// Your ajax call
}));
您可以使用return deferred.promise
返回承诺。
注意:确保在$q
服务中注入Auth
服务。
答案 2 :(得分:0)
问题是通过改变
来决定的$scope.result = result.data;
在
$scope.blabla = result.data;
在那次魔术之后,我的模板终于向我展示了{{blabla}}变量。
角度剂量没有达到我的预期: - (