Вам необходимо создать службу с HTTP-вызовом на действие вашего сервера. Ответ всегда будет задавать данные правильно.
var app = angular.module('myApp', []);
app.service('getUserDetailsService', ['$http', function($http) {
this.getDetails = function() {
var details = {name:'',age:'',gender:'M'}
$http.get('Your action url')
.success(function(data) {
details.name = data.name;
details.age = data.age;
details.gender = data.gender;
})
.error(function() {
//handle error
});
return details;
};
}]);
//Controller
app.controller("userController",function($scope,getUserDetailsService){
$scope.getDetails = function() {
getUserDetailsService.getDetails().then(function(detail) {
$scope.details = detail;
}, function(error) {
});
}
$scope.getDetails() //Call whenever you want
});
Fiddle ссылка - https://jsfiddle.net/ftzyyt0L/3/
Похоже есть проблема с вашим дизайном. Это связано с тем, что вы пытаетесь изменить свою модель в сервисе. Это нецелесообразно, поэтому попытайтесь получить данные от службы до контроллера и установите там значения. –