我的谜......我有我的控制器和我的服务。 为什么服务LocalDataService.getCacheUserUpdate();还没推出?这是一些代码细节。 我修改了代码以遵循与chatsUpdate相同的模式,但是LocalDataService.getCacheUserUpdate();当我逐步调试时,它会一直被跳过...但是在函数拉动刷新完成后会触发它
谢谢!
我的控制器:
// Check for new updates in conversations and return the number of new messages
var getChatsUpdates = function() {
DataService.getHasNewMessages().success(function(response) {
$scope.chatsUpdates = response.chats_updates;
//console.log($scope.chatsUpdates)
});
};
var updateUser = function() {
LocalDataService.getCacheUserUpdate().success(function(response) {
$scope.user = [];
$scope.user = DataService.getUser();
}).error(function() {
console.log('error on userupdate')
})
}
var updateUserFreeStatus = function() {
updateUser()
$scope.user_free_status = [];
$scope.user_free_status = DataService.getUserFreeStatus();
}
$scope.doHomeRefresh = function() {
console.log('Start refreshing!')
updateUserFreeStatus()
getChatsUpdates()
$scope.$broadcast('scroll.refreshComplete');
$scope.$apply()
console.log('refreshed!')
};
我的服务:
.factory('LocalDataService', function(WebService, $localstorage) {
return {
getCacheUserUpdate: function() {
var userUpdate = WebService.get('profile/get/user/update');
userUpdate.success(function(response) {
$localstorage.unset('user')
console.log(response.user)
$localstorage.setObject('user', response.user)
});
return userUpdate;
}
};
})
.factory('DataService', function($q, $localstorage, WebService) {
return {
getUser: function() {
return $localstorage.getObject('user');
},
// get updates to check if new messages in conversations
getHasNewMessages: function() {
var updates = WebService.get('conversations/updates/new-messages');
updates.success(function(response) {
// nothing
});
updates.error(function(response) {
console.log('error in get messages: ' + response)
});
return updates;
}
};
})
我真的不知道那里发生的事情......
答案 0 :(得分:2)
正如Emanual Ralha所说,您的Web服务需要返回promise对象。基本上说:
var foo = $http.get('http://localhost/potatoes/1')
实际上并没有将HTTP调用的结果放入foo中,因为这需要一段时间才能完成,而且这并不是javascript的实际工作方式。
相反,foo是对价值的承诺 - 你需要做的事情
$http.get().then(function(data) {
$scope.potato = data.data;
});
在那种情况下,回调函数在$ http完成时被调用(它与.success同义,但.success是非标准的,所以习惯.then和.catch),你可以处理结果那时候。