2015-09-01 4 views
0

Я работал с файлами json и angularjs, так как я вносил изменения в json-файл, чтобы сделать его более полным с информацией, структура файла стала более сложной, теперь я не могу доступ к данным, к которым я привык. Это должно быть так же, но это не загрузка.Доступ к сложному файлу json с angularjs

это Ясон: http://www.jsoneditoronline.org/?id=72e10a49f6f7650a864dda13a3f2d56a, (Примечание: Estado = состояние, localidad = место я пытаюсь отобразить адреса из различных состояний в выбранной выберите).

Как я загружать данные JSON в HTML:

<select class="control-group chosen-select" chosen id='sl_edo' style="width:300px;"> 
    <!-- also i tried ng-repeat="pueblo in pueblos" which worked with the old json file--> 
     <optgroup ng-repeat="pueblo in pueblos[0] | orderBy:'estado'" label={{pueblo.estado}}> 
      <option>{{pueblo.localidad}}</option> 

     </optgroup> 

    </select> 

некоторые тесты я сделал, чтобы проверить, как это структура

<p>{{pueblos[0].estado}}</p> 

данных Эта линия приносит мне это

[ {«Халиско»: {«localidad»: {«Текила»: и т. Д.

другой HTML линии я тестировал

<p>{{pueblos[0]}}</p> 

{ "Estado": [{ "Халиско": { "localidad": { "Текила"

+1

Ключ «pueblos» не встречается в этом файле. У каждого «estado» есть объект «localidad», на котором указано имя города. Просто посмотрите на JSON и соответствующим образом настройте свой код. Вы можете подумать, что это должно быть так же, но это не так. –

ответ

2

ваших структур данных являются поодаль , Вы хотите, чтобы подобные объекты имели одинаковую структуру. Например, прямо сейчас, чтобы получить доступ к объекту «Jalisco», вы должны позвонить pueblos[0].estado[0].Jalisco или pueblos[0].estado[0]["Jalisco"]. Но если вы попробуете pueblos[0].estado[1].Jalisco, вы получите сообщение об ошибке, потому что estado[1] имеет только «Sonora» в качестве атрибута. Вместо этого, вы, вероятно, хотите, структура, как это:

estados = [ 
    { 
     "nombre": "Jalisco", 
     "localidades": [ 
      { 
       "nombre": "Tequila", 
       "oferta": { 
        "gen": 99, 
        "ecas": 66, 
       }, 
      }, 
     ], 
    } 
] 

В этой структуре, вы можете получить доступ к имени государства по estado[#idx].nombre. Тогда, если вам нужны локальные состояния этого штата, это estado[#idx].localidades[#idx]. Поэтому, если вам нужен атрибут «gen» из «oferta» в Текиле, вы получаете доступ к нему следующим образом: estados[0].localidades[0].oferta.gen. В принципе, если вы работаете со списком, который вы используете с помощью ng-repeat, все объекты должны иметь одинаковые имена атрибутов. Вы не должны использовать разные имена в качестве имен атрибутов, например, использовать атрибуты «Jalisco» или «Sonora».

Смежные вопросы