Tôi đang cố gắng viết một nhà máy hiển thị API người dùng đơn giản. Tôi mới đến AngularJS và tôi hơi bối rối về các nhà máy và cách sử dụng chúng. Tôi đã thấy các chủ đề khác nhưng không có chủ đề nào phù hợp với trường hợp sử dụng của tôi.Sử dụng nhà máy để lộ một API đơn giản
Vì mục đích đơn giản, chức năng duy nhất tôi muốn đạt được là nhận tất cả người dùng trong một mảng và sau đó chuyển chúng đến bộ điều khiển thông qua nhà máy được tiêm.
tôi lưu trữ cho người sử dụng trong một file json (bây giờ tôi chỉ muốn đọc tập tin đó, mà không sửa đổi dữ liệu)
users.json:
[
{
"id": 1,
"name": "user1",
"email": "[email protected]"
},
{
"id": 2,
"name": "user2",
"email": "[email protected]"
}
]
Nhà máy tôi cố gắng để viết nên một cái gì đó như thế này:
UsersFactory:
app.factory('usersFactory', ['$http', function ($http) {
return {
getAllUsers: function() {
return $http.get('users.json').then(
function(result) {
return result.data;
},
function(error) {
console.log(error);
}
);
}
};
}]);
Và cuối cùng, cuộc gọi điều khiển sẽ là như thế này:
UsersController
app.controller('UsersCtrl', ['$scope', 'usersFactory', function($scope, usersFactory){
usersFactory.getAllUsers().then(function (result) {
$scope.users = result;
});
}]);
Tôi đã tìm kiếm trên web và nó có vẻ như nó không phải là thực sự là một thực hành tốt để sử dụng các nhà máy này và nếu tôi muốn đạt được một số chức năng khác như thêm/xóa người dùng mới vào/từ nguồn dữ liệu, hoặc bằng cách nào đó lưu trữ mảng trong nhà máy, đó sẽ không phải là cách để thực hiện. Tôi đã nhìn thấy một số nơi mà việc sử dụng của nhà máy là một cái gì đó giống như new UsersFactory()
.
Cách chính xác để sử dụng các nhà máy khi cố gắng sử dụng API là gì?
Có thể khởi tạo nhà máy với đối tượng có chứa kết quả $http.get()
và sau đó sử dụng nó từ bộ điều khiển theo cách này không?
var usersFactory = new UsersFactory(); // at this point the factory should already contain the data consumed by the API
usersFactory.someMoreFunctionality();
Tôi đã luôn luôn tiêu thụ api bằng cách sử dụng '$ resource', mà có rất nhiều công việc cho bạn khi giao dịch với apis an toàn. nhưng, trong trường hợp của bạn, một http đơn giản nên được tốt vì bạn chỉ làm việc với một tập tin json đơn giản. bạn không tiêu thụ api. –
Bạn có đang thực hiện nhiều cuộc gọi 'getAllUsers()' hay chỉ là một cuộc gọi cho toàn bộ thời gian của ứng dụng của bạn? – allienx
@KevinB Tôi đang sử dụng json đơn giản chỉ để đơn giản, việc sử dụng thực tế của ứng dụng này sẽ được với một API RESTful, nhưng từ quan điểm của khách hàng nó không nên thực sự quan trọng. –