我一直在使用json文件和angularjs,因为我对json文件进行了更改以使其更完整的信息,文件的结构变得更加复杂,现在我无法以他们的方式访问数据我曾经。它应该是相同的方式,但它没有加载。
这是杰森: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>
这一行给我带来了这个
[{&#34;哈利斯科&#34; {&#34; localidad&#34; {&#34;龙舌兰&#34;:,等...
我测试的另一条html线
<p>{{pueblos[0]}}</p>
{&#34;埃斯塔&#34;:[{&#34;哈利斯科&#34; {&#34; localidad&#34; {&#34;龙舌兰&#34;
答案 0 :(得分:2)
您的数据结构有点偏差。您希望类似对象具有相同的结构。例如,现在,访问&#34; Jalisco&#34;对象,您必须致电pueblos[0].estado[0].Jalisco
或pueblos[0].estado[0]["Jalisco"]
。但是,如果您尝试pueblos[0].estado[1].Jalisco
,则会收到错误,因为estado[1]
只有#34; Sonora&#34;作为一个属性。相反,你可能想要这样的结构:
estados = [
{
"nombre": "Jalisco",
"localidades": [
{
"nombre": "Tequila",
"oferta": {
"gen": 99,
"ecas": 66,
},
},
],
}
]
在此结构中,您可以通过estado[#idx].nombre
访问州名称。然后,如果你想要这个州的地方性,那就是estado[#idx].localidades[#idx]
。所以如果你想要&#34; gen&#34; &#34; oferta&#34;的属性在龙舌兰酒中,您可以像estados[0].localidades[0].oferta.gen
一样访问它。基本上,如果您正在使用使用ng-repeat循环的列表,则所有对象应共享相同的属性名称。你永远不应该使用不同的名称作为属性名称,例如使用&#34; Jalisco&#34;或&#34;索诺拉&#34;作为属性。