У меня есть контроллер и сервис.Угловая область не обновляется после сервисного вызова
Служба выполняет http.get
и возвращает true, если успешно, и false, если ошибка.
Однако в контроллере он принимает true
или false правильно, но html привязки всегда отображается как истинный?
Контроллер:
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
@tymeJV - im, ничего не передавая службе. –
'getData' определяется двумя параметрами, вы передаете один аргумент (анонимная функция). И 'userModel' в обратном вызове' $ http.get' будет 'undefined', так как вы не передали второй аргумент, поэтому' userModel (data); 'должен вызывать ошибку, вы проверили консоль? –