Vì vậy, tôi có một bộ sưu tập các đối tượng trong máy chủ, tôi muốn cư một ng-lặp lại khi tải trang.
Tôi đã làm một nhà máy mà lấy danh sách từ một nguồn tài nguyên trên máy chủ, như vậy:
app.factory('objectArray', ['$http', function($http) {
// This is returning a $$state object
// instead of response.data...
return $http.post('/get_collection').then(function(response) {
console.log(response.data);
return response.data;
});
}]);
Tôi đã có công việc mã này trước khi sử dụng ui-router và tài sản quyết tâm trong tuyên bố nhà nước. Tuy nhiên khi tiêm nhà máy này trực tiếp vào bộ điều khiển của tôi, thay vì nhận được response.data tôi nhận được một đối tượng nhà nước $$.
điều khiển của tôi trông như thế này:
app.controller('applicationController', ['$scope', 'objectArray', function($scope, objectArray) {
$scope.array = objectArray;
console.log($scope.array);
}]);
trùng lặp có thể xảy ra của [Làm thế nào để trả lại phản hồi từ một cuộc gọi không đồng bộ ?] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call); (xem [this duplicate] (http://stackoverflow.com/questions/22951208/return-value-after-a-promise) là tốt) – Kenney
@Kenney Tôi tò mò nhất về lý do tại sao nó hoạt động ở góc ui-router mà không cần bất kỳ mã bổ sung, nhưng trong trường hợp này, có {$$ state: object} –
Tôi không chắc chắn, nhưng bạn không thể trả về các giá trị từ ['Promise.then'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Tham chiếu/Global_Objects/Promise/then). Phương pháp tiếp cận của bạn có giống như [this] (https://github.com/angular-ui/ui-router/issues/77) không? – Kenney