1

У меня есть этот завод:data.data для чтения моего JSON

'use strict'; 

angular.module('testCon').factory('UserService', function ($http) { 
    return { 
     getAll: function() { 
      return $http.get('http://localhost:1337/api/user'); 
     } 
    } 
}); 

И этот контроллер:

'use strict'; 

angular.module('testCon').controller('UserController', function ($scope, UserService) { 
    $scope.users = []; 
    UserService.getAll().then(
     function (data) { 
      $scope.users = data.data; 
     }, function (err) { 

     } 
    ); 
}); 

Могу ли я каким-то образом избежать data.data я хотел бы иметь только data. Что заставляет меня делать data.data, чтобы увидеть его в области?

ответ

1

Просто вы не можете этого избежать. Вы можете сделать это как одно изменение времени, возвращая только response.data от getAll. Тогда все потребители получат прямые данные.

Код

angular.module('testCon').factory('UserService', function ($http) { 
    return { 
     getAll: function() { 
      return $http.get('http://localhost:1337/api/user').then(function(response){ 
       return response.data 
      }); 
     } 
    } 
}); 
+1

Удивительные работы отлично! – btmach

+0

@btmach Рад помочь вам .. Спасибо :) Спасибо :) –

0

Вы можете попробовать что-то вроде этого:

'use strict'; 

angular.module('testCon').factory('UserService', function ($http) { 
    return { 
     getAll: function() { 
      return $http.get('http://localhost:1337/api/user').then(function (response) { 
       return response.data; 
      }); 
     } 
    } 
}); 

Тогда держите другую функцию:

'use strict'; 

angular.module('testCon').controller('UserController', function ($scope, UserService) { 
    $scope.users = []; 
    UserService.getAll().then(
     function (data) { 
      $scope.users = data; 
     }, function (err) { 

     } 
    ); 
}); 

Что происходит, что первое возвращение обещание привязана ко второму, тогда (..), но вторая получает извлеченные данные. Это хорошая идея о обещаниях.