Я пытаюсь написать фабрику, которая предоставляет простой API пользователей. Я новичок в AngularJS, и я немного запутался в отношении фабрик и как их использовать. Я видел другие темы, но ни один из них не подходит для моего использования.Использование фабрики для предоставления простого API
Для простоты единственной функциональностью, которую я хотел бы достичь, является получение всех пользователей в массиве, а затем передача их контроллеру через внедренную фабрику.
Я хранила пользователей в файле JSON (теперь я только хочу, чтобы прочитать этот файл, не изменяя данные)
users.json:
[
{
"id": 1,
"name": "user1",
"email": "[email protected]"
},
{
"id": 2,
"name": "user2",
"email": "[email protected]"
}
]
Завод Я пытаясь написать должно быть что-то вроде этого:
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);
}
);
}
};
}]);
И, наконец, вызов контроллера будет выглядеть так:
UsersController
app.controller('UsersCtrl', ['$scope', 'usersFactory', function($scope, usersFactory){
usersFactory.getAllUsers().then(function (result) {
$scope.users = result;
});
}]);
Я искал в Интернете, и кажется, что это не очень хорошая практика, чтобы использовать заводы этот путь, и если бы я хотел бы получить еще несколько функций, таких как добавление/удаление нового пользователя в/из источника данных или каким-то образом сохранить массив на заводе, это не было бы его способом. Я видел некоторые места, где использование фабрики - это что-то вроде new UsersFactory()
.
Что было бы правильным способом использовать заводы при попытке использовать API?
Возможно ли инициализировать завод с объектом, содержащим результат $http.get()
, а затем использовать его с контроллера таким образом?
var usersFactory = new UsersFactory(); // at this point the factory should already contain the data consumed by the API
usersFactory.someMoreFunctionality();
Я всегда употреблял api с помощью '$ resource', который делает много работы для вас, когда вы занимаетесь спокойной apis. но в вашем случае простой http должен быть прекрасным, так как вы просто работаете с простым файлом json. вы не потребляете api. –
Вы собираетесь делать несколько вызовов 'getAllUsers()' или это всего лишь один вызов для жизни вашего приложения? – allienx
@KevinB Я использую простой json просто для простоты, реальное использование этого приложения будет с RESTful API, но с точки зрения клиента это не имеет большого значения. –