2

アンギュラーは初めてで、素晴らしいです。

私が頭を悩ませていることの 1 つは、名前空間を含む 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']}}

そのセットの 3 番目のキーを取得します。

ありがとう。

4

1 に答える 1

2

後のドットを取り除くitem

作業例: http://jsfiddle.net/bonza_labs/Kc2uk/

ストレートな JavaScript とまったく同じ方法でプロパティにアクセスします (angular は基本的には式を javascript** として eval() するため)。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 に答える