2

新的角度,它很棒。

我脑子里放屁的一件事是解析包含命名空间的 JSON 提要:

来自 JSON 提要的示例:

"title": {
  "label": "Fuse"
},
"im:name": {
   "label": "John Doe"
},
"im:image": [ {
    "label": "70x70",
    "attributes": {
      "height": "55"
    }
  }, {
    "label": "80x80",
    "attributes": {
      "height": "60",
      "im:link": "www.google.com"
    }
  }, {
    "label": "90x90",
    "attributes": {
      "height": "170"m
      "im:link": "www.yahoo.com"
    }
}],

我可以像这样成功地解析没有命名空间的项目:

<p ng-repeat="item in results.feed['entry']">
            title: {{item.title['label']}}
</p>

但无法使用以下方法获取具有名称空间的项目来显示:

            name: {{item.['im:name']['label']}}
OR
            name: {{item.['im-name']['label']}}
OR
            name: {{item.['im->name']['label']}}

由于是新手,我认为这样的事情会起作用:

<div xmlns:im="http://www.aol.com" id="im-app" im-app="im">
  <p ng-repeat="item in results.feed['entry']">
   …namespace code in here…
  </p> 
</div>

但这并没有帮助。

额外的奖励问题:如果名称空间包含属性,也包含名称空间怎么办?

任何帮助将不胜感激。

谢谢!鹏。


虽然克雷格回答了这个问题,

这也供其他人参考:

如果要定位对象集中的特定键:

"im:image":[
  {
    "label":google",
    "attributes":{
      "height":"55"
    }
  },
  {
    "label":"yahoo",
    "attributes":{
      "height":"60"
    }
  },
  {
    "label":"aol",
    "attributes":{
      "height":"170"
  }
}

{{item['im:image'][2]['label']}}

将获得该组中的第三把钥匙。

谢谢。

4

1 回答 1

2

之后去掉点item

工作示例:http: //jsfiddle.net/bonza_labs/Kc2uk/

您访问属性的方式与直接 javascript 完全相同(因为 angular 基本上是 eval()-ing 表达式为 javascript**)。item.['foo']不是有效的 JavaScript。您使用方括号表示法my:name是正确的,因为它对点表示法无效。

有效的:

item.foo
item['foo']

具有非标准属性名称:

item['foo:bar']
item['foo-bar']

在你的情况下:

{{item['im:name']['label']}}

** 或足够接近以理解此解决方案

于 2013-09-17T00:35:20.163 回答