【发布时间】:2016-02-03 14:55:52
【问题描述】:
我有一个控制器和服务。
服务执行http.get,成功则返回true,错误则返回false。
但是,在控制器中,它正确接收true或false,但绑定的html总是显示为true??
控制器:
app.controller('MyController', function($scope, MyService) {
MyService.getData(function(isLoggedIn, userData) {
var loggedIn = isLoggedIn;
$scope.isLoggedIn = loggedIn;
$scope.myUser = userData;
//$scope.$evalAsync();
//$scope.$apply();
});
});
app.factory('MyService', function($http, $q) {
return {
getData: function(isLoggedIn, userModel) {
$http.get('../assets/data/data.json')
.success(function(data) {
userModel(data);
isLoggedIn(true);
})
.error(function(data, status, headers, config) {
// If 400 or 404 are returned, the user is not signed in.
if (status == 400 || status == 401 || status == 404) {
isLoggedIn(false);
}
});
}
}
});
HTML:
{{isLoggedIn}}
在上面,{{isLoggedIn}} 总是正确的。即使我将 http 调用修改为:
$http.get('../blah/blah/blah.json')
努力强制执行 .error/fail。
我已经尝试过 $scope.$apply() 并且我不断收到处理中的摘要循环错误。救命!!!
【问题讨论】:
-
您在服务中使用
isLoggedIn和userModel就像它们是方法一样...您将什么传递到服务中? -
@tymeJV - 我没有向服务传递任何内容..
-
getData定义有两个参数,您传递一个参数(匿名函数)。而userModel在$http.get回调中将是undefined因为你没有传递第二个参数所以userModel(data);应该抛出一个错误,你检查你的控制台了吗? -
@PatrickEvans - 正确,userModel 抛出错误
标签: javascript angularjs angularjs-scope angular-services angular-controller