You probably have a problem with “dot notation”.
See many of the posts linked here : Issue with model binding when using ionic & https://github.com/angular/angular.js/wiki/Understanding-Scopes
in your view, use data.posts
. Then, in your controller do this:
$scope.data = { "posts" : [] };
$scope.refresh = function() {
PostService.load().then(function(data) {
PostService.set(data.data);
$scope.data.posts = PostService.get();
$scope.$broadcast('scroll.refreshComplete');
});
}