#angularjs #angular-resource
#angularjs #angular-resource
Вопрос:
Я пытаюсь несколькими способами получить доступ к своим пользователям в локальном файле json, чтобы позже сравнить их с вводом пользователей. и если есть совпадение, доступ разрешен, но моя главная проблема сейчас — просто добраться до этих пользователей. Мой код до сих пор:
Что я делаю не так? я такой новичок в программировании. Я пробовал разные вещи, и ничего не работает. Большое спасибо за помощь
Комментарии:
1. Что значит локальный? У вас есть локальный http-сервер?
2. @AlexanderAnikeev.. я имею в виду локальный файл json со всеми моими пользователями, и для запуска моего приложения angular я использую http-сервер.
Ответ №1:
Можете ли вы получить доступ к файлу через браузер (через ваш url localhost:8080/resources/data/users.json)?
Если вы не сможете, вы не сможете получить доступ через $resource или $ http.
Если вы можете, любой метод должен работать:
1) Через $resource
$scope.users = [];
var UsersResource = $resource('/resources/data/users.json');
где мы можем получить ответ с помощью обратного вызова
UsersResource.get({}, function(response) {
$scope.users = response;
});
или с помощью $promise
UsersResource.get().$promise.then(function(response) {
$scope.users = response;
});
2) Через $http.get
$scope.users = [];
$http.get('/resources/data/users.json').then(function(response) {
$scope.users = response;
});
В вашем примере вы пытаетесь получить массив пользователей, возвращая $resource, но $resource возвращает объект с методами. Каждый метод имеет обратные вызовы (успех, ошибка) или возвращает объект $promise .
Ответ №2:
Нет необходимости использовать $resource
, если вы просто собираетесь получить файл json. Используйте $http
вместо:
this.getUsers = function(){
return $http.get('path/to/file.json');
};
И использование:
dataService.getUsers().then(function(resp){
//Do something with the data
$scope.users = resp;
})
$resource
предназначен для использования при взаимодействии с RESTful API. То, что вы getUsers()
делаете, на самом деле возвращает объект-ресурс, который вы затем можете вызвать get()
. Но я рекомендую использовать $http
в этом случае.
Комментарии:
1. Спасибо, я пробовал этот способ и все еще не работает, я получаю ошибку 404: angular.js:11881 GET localhost:8080/resources/data/users.json 404 (Не найден)
2. Я не знаю, как выглядит ваша среда разработки, но если вы предварительно скомпилируете код с помощью модуля bundler, вам нужно будет скопировать файл json в
build
каталог или аналогичный. Код работает, просто неверный путь к файлу!
Ответ №3:
Если вы хотите использовать $resouce, вам нужно создать две функции в вашем контроллере / фабрике, где «templatesSuccess» возвращает данные запроса.
getAllTemplates: function(query) {
return $resource(CONST.CONFIG.BASE_URL 'receiver/get-templates').get(query, obj.templatesSuccess).$promise;
},
templatesSuccess: function(response) {
obj.allTemplates = response;
},
Комментарии:
1. спасибо за вашу помощь .. но я не уверен, что полностью понимаю ответ или синтаксис. смущает эта строка: return $resource(CONST. CONFIG.BASE_URL ‘receiver/get-templates’).get(запрос, obj.templatesSuccess).$обещание;
2. Это полный путь, из которого вы хотите получить API… Здесь вы можете указать полный путь к файлу json