У меня есть, вероятно, очень очевидный вопрос, но я нигде не мог найти ответа.
Я просто пытаюсь загрузить некоторые данные JSON со своего сервера в клиент. Прямо сейчас я использую JQuery для загрузки с помощью вызова AJAX (код ниже).
<script type="text/javascript">
var global = new Array();
$.ajax({
url: "/json",
success: function(reports){
global = reports;
return global;
}
});
</script>
Он находится в html файле. Пока это работает, но проблема в том, что я хочу использовать AngularJS. Теперь, когда Angular МОЖЕТ использовать переменные, я не могу загрузить все это в переменную, поэтому я могу использовать a для каждого цикла. Похоже, это связано с «$ Scope», который обычно находится в файле .js.
Проблема в том, что я не могу загрузить код с других страниц в файл .js. Каждый пример Angular показывает только такие вещи:
function TodoCtrl($scope) {
$scope.todos = [
{text:'learn angular', done:true},
{text:'build an angular app', done:false}];
Итак, это полезно, если Я) Хотите набрать все это вручную, И Б) Если я заранее знаю, какие у меня данные ...
Я не знаю заранее (данные динамические) и не хочу их печатать.
Итак, когда я попытался изменить вызов AJAX на Angular с помощью $ Resource, похоже, это не сработало. Возможно, я не могу понять, но это относительно простой запрос GET для данных JSON.
tl: dr Я не могу заставить работать вызовы AJAX для загрузки внешних данных в угловую модель.
источник
Ответы:
Как упоминает Крис, вы можете использовать
$resource
сервис для взаимодействия с сервером, но у меня сложилось впечатление, что вы начинаете свой путь с Angular - я был там на прошлой неделе - поэтому я рекомендую начать экспериментировать непосредственно с$http
сервисом. В этом случае вы можете вызвать егоget
метод.Если у вас есть следующий JSON
Вы можете загрузить это так
get
Метод возвращает посыл объект , который первый аргументом является успехом обратным вызовом , а вторая ошибка обратного вызова.Когда вы добавляете
$http
в качестве параметра функции Angular, это чудо и вводит$http
ресурс в ваш контроллер.Я привел здесь несколько примеров
источник
code
$ http.get ('/ json'). success (function (response) {$ scope.reports = response; getData ();code
что меня интересует, так это объект обещания ... Я действительно хочу узнать об этом больше. Мне нравится эта идея. Другая проблема, с которой я столкнулся, - это в основном выполнение цикла по запросу ajax, поэтому я могу постоянно обновлять страницу «автоматически». $ timeout у меня не работает.config
,data
,headers
иstatus
. Значения вdata
свойстве соответствуют вашим требованиям.$scope.todos = res;
или$scope.todos = res.data;
- разница в том, находитесь ли вы в.then(response)
или в.success(result)
..success
Дается, вresponse.data
то время.then
как дается всеresponse
.Вот простой пример того, как загрузить данные JSON в модель Angular.
У меня есть веб-служба JSON «GET», которая возвращает список сведений о клиенте из онлайн-копии базы данных Microsoft Northwind SQL Server .
http://www.iNorthwind.com/Service1.svc/getAllCustomers
Он возвращает некоторые данные JSON, которые выглядят следующим образом:
..и я хочу заполнить раскрывающийся список этими данными, чтобы он выглядел так ...
Я хочу, чтобы текст каждого элемента поступал из поля «CompanyName», а идентификатор - из полей «CustomerID».
Как бы я это сделал?
Мой контроллер Angular будет выглядеть так:
... который заполняет переменную listOfCustomers этим набором данных JSON.
Затем на моей HTML-странице я бы использовал это:
И это все. Теперь мы можем увидеть список наших данных JSON на веб-странице, готовый к использованию.
Ключ к этому - в теге "ng-options":
Странный синтаксис, чтобы понять!
Когда пользователь выбирает элемент в этом списке, в переменной «$ scope.selectedCustomer» будет установлен идентификатор (поле CustomerID) этой записи клиента.
Полный сценарий для этого примера можно найти здесь:
Данные JSON с Angular
Майк
источник
Я использую следующий код, найденный где-то в Интернете, но не помню источник.
источник