Проблемы с отображением данных JSON с помощью Angular Js ng-repeat

Я могу получить следующие данные JSON (тестовые данные) из файла php:

JSON:

[{"id":"1","name":"shabri","desc":"bbkbjkbjbjnnklnln","location":"location","mobile":"498534534","telephone":"4549385","offer":"20","email":"nfnkjrnfnrndnrgnkjr"},{"id":"2","name":"bhagatfergdfgfdg","desc":"vfdgfdbgbbgbg","location":"fbgbgfbgfb","mobile":"544656757","telephone":"4223424","offer":"30","email":"vdsxdvgvgv"},{"id":"3","name":"rddfdgdf","desc":"bdffgd","location":"fghgfhfhgf","mobile":"8598","telephone":"856845","offer":"6","email":"httrdh6kiki"}] 



Угловой контроллер Js

.controller('RestaurantsCtrl',  ['$scope', '$http', function ($scope, $http) {
$http.get('http://xyz/getRestros.php')


.success(function(data) {
  alert(data);
  $scope.Restaurants = data;
  });
}])


Я уверен, что данные JSON извлекаются, потому что для тестирования у меня есть предупреждение (данные), которое отображает правильные данные в кодировке JSON в окне предупреждения.


Проблема в том, что данные не получают привязку к $scope.Restaurants. поэтому ng-repeat в html не заполняет список.


ng-repeat заполняет список, если я жестко запишу $scope.Restaurants.


в чем здесь ошибка? пожалуйста помоги..

РЕДАКТИРОВАТЬ:

жестко закодированные $ scope. Рестораны, которые работают:


$scope.Restaurants = [
{ name: 'Shabri', id: 1 },
{ name: 'Bhagat Tarachand', id: 2 },
{ name: 'Udipi', id: 3 },
{ name: 'Shahu', id: 4 },
{ name: 'Bagdadi', id: 5 },
{ name: 'Shiv Sagar', id: 6 }

];


нг-повторить:

<a class="item item-thumbnail-left" ng-repeat="Restaurant in Restaurants | filter: searchText" href="#/app/Restaurants/{{Restaurant.id}}">
  <img src="img/default_restro.png" style="margin-top:30px;"/>
  <h2 style="font-weight:bold;">{{Restaurant.id}}</h2>
  <p>{{Restaurant.name}}</p><br>
  <span style="white-space: pre-wrap; font-weight:300;">This is the description about the restaurant click to know more.</span><br>


</a>

3 ответа

Вам нужно проанализировать возвращенную строку JSON в объект.

Пытаться

arrayData = JSON.parse(data);
$scope.Restaurants = arrayData;

Вы можете выполнить отладку в представлении Chrome Developer Tools (Ctrl-Shift-I) и установить точку останова, чтобы увидеть, имеет ли значение $scope.Restaurant после строки $scope.Restaurants = data;

Это на самом деле не ответ, но я нашел причину проблемы выше и может случиться с кем-то.

Виновником был бесплатный веб-хостинг, который я использовал для размещения этого php-файла.

Каждый раз, когда выполняется php, веб-хостинг добавляет какой-то скрипт Google Analytics в конце после завершения объекта. Этот скрипт не появляется при редактировании этого файла в реальном времени. я не знаю как

Во всяком случае, я нашел это, когда я снова отладил $ scope.Restaurants.

Кажется, что если что-то еще будет отражено с объектом JSON, то он будет сериализован и будет считаться строкой.

После исправления и изменения хоста была обнаружена разница, которая рассматривалась как фактические объекты json, и она работала нормально.

Другие вопросы по тегам