Ключ ng-repeat не отображается с использованием данных JSON

Моя служба захватывает данные JSON и успешно возвращает данные в контроллер, однако у меня возникла проблема с использованием ng-repeat для перебора имен ключей.

Я хочу отображать имена ключей на странице в виде списка, поскольку они являются именами категорий.

В настоящее время ng-repeat повторяет правильное количество раз, но не отображает имя ключа.

Контроллер:

app.controller('getNav', function(getJSONData, $scope) {
    var path = 'json/navigation';
    getJSONData.async(path).then(function(d) {
        $scope.data = d;    
    });
});

Сервис:

app.factory('getJSONData', function($http) {
  var getJSONData = {
    async: function(path) {
      var promise = $http.get(path).then(function (response) {
        return response.data;
      });
      return promise;
    }
  };
  return getJSONData;
});

Данные JSON:

{ 
     "data": {
         "category_a": ["a", "b", "c", "d"], 
         "category_b": ["e", "f", "g"], 
         "category_c": ["h", "i", "j"]
     }, 
     "response": "Navigation"
}

Просмотр:

<ul ng-controller="getNav">
   <li data-ng-repeat="(key, value) in data.data">Category name is: {{key}}</li>
</ul>

person Malcr001    schedule 15.03.2013    source источник
comment
С ng-repeat все в порядке: plunker.   -  person Stewie    schedule 15.03.2013
comment
Это смущает меня еще больше, потому что я не знаю, почему приведенный выше пример не работает. Контроллер успешно извлекает данные, и кажется, что область повторяется, но никогда не отображает имена ключей.   -  person Malcr001    schedule 15.03.2013
comment
Используйте console.log() в функции обратного вызова getJSONData, чтобы проверить/выгрузить данные JSON, возвращаемые с вашего сервера, чтобы убедиться, что они правильно отформатированы.   -  person Mark Rajcok    schedule 15.03.2013
comment
@mark Данные регистрируются как объект. Будет ли это причиной?   -  person Malcr001    schedule 15.03.2013
comment
Не обязательно. Используйте планкер Стьюи и console.log($scope.data) в контроллере. Сравните этот вывод (который в Chrome показывает Object, но я могу расширить его, чтобы увидеть все данные) с тем, что вы получаете с сервера. Если они выглядят одинаково, то это не ваша проблема.   -  person Mark Rajcok    schedule 15.03.2013
comment
Они оба идентичны под консолью.   -  person Malcr001    schedule 15.03.2013
comment
Это должно быть проблемой googleappengine, потому что я переместил все файлы из него и переместил их на локальный сервер apache, и он работает. Очень странно.   -  person Malcr001    schedule 15.03.2013


Ответы (1)


Итак, надеюсь, я смогу помочь кому-то в будущем, у кого будет такая же проблема. Я потратил день, рвя на себе волосы из-за этой чертовой штуки. После выделения файлов из моего механизма приложений Google я обнаружил, что файлы работают на простом локальном хосте MAMP, но не на механизме приложений Google.

После некоторого поиска я обнаружил, что это из-за конфликтующих тегов шаблонов, которые angular и DJango используют {{}}. Так что просто установите angular, чтобы использовать что-то другое, и проблема будет решена, см. здесь:

AngularJS с Django — конфликтующие теги шаблона

person Malcr001    schedule 16.03.2013