7

スコープで定義された JSON 配列:

$scope.faq = [
        {"Question 1": "Answer1"},
        {"Question 2": "Answer2"}
    ];

HTML:

<div ng-repeat="f in faq">
    {{f}}
</div>

出力:

{"Question 1": "Answer1"}
{"Question 2": "Answer2"}

出力を次のように表示したい:

Question 1 - Answer1
Question 2 - Answer2

それがどのように機能するように見えるか:

<div ng-repeat="f in faq">
    {{f.key}}-{{f.value}}
</div>

...しかし、そうではありません。

4

5 に答える 5

12

スコープ内の json 配列を次のように変更します。

$scope.faq = [
        {key: "Question 1",
         value: "Answer1"},

        {key: "Question 2",
         value: "Answer2"}
    ];

そしてあなたの見解では;

<div ng-repeat="f in faq">
    {{f.key}}-{{f.value}}
</div>
于 2013-08-26T03:32:35.630 に答える
8

配列内にあるため、各オブジェクトのキー値をループする必要があります。

http://fiddle.jshell.net/TheSharpieOne/QuCCk/

<div ng-repeat="value in faq">
    <div ng-repeat="(question,answer) in value">
        {{question}} - {{answer}}
    </div>
</div>

別の方法:
シンプルなオブジェクトがある場合:

$scope.faq = {
     "Question 1": "Answer1",
     "Question 2": "Answer2"
};

2回目の繰り返しを避けることができます

<div data-ng-repeat="(question,answer) in faq">
        {{question}} - {{answer}}
</div>

http://fiddle.jshell.net/TheSharpieOne/D3sED/

于 2013-08-26T03:33:42.557 に答える
0
$scope.faq = [
    "Answer1",
    "Answer2"
];


<div ng-repeat="answer in faq">
    Question {{$index+1}}-{{answer}}
</div>
于 2013-08-26T03:32:48.517 に答える
0

ECMA5 準拠のブラウザを使用している場合は、

<div ng-repeat="f in faq">
    {{Object.keys(f)[0]}}-{{f[Object.keys(f)[0]]}}
</div>

もちろん、これはオブジェクトにキーが 1 つしかない場合にのみ確実に機能します。複数のキーがある場合、最善の策は、キー名を取得するフィルター関数を作成することです。これを使用して、関連するキーを抽出できます。

于 2013-08-26T03:33:48.290 に答える
0

コードを確認してください: http://plnkr.co/edit/NGEcK7iieFRtvt7WP48A?p=preview

ng-repeat には配列が必要です。配列内のオブジェクトごとに、値にバインドされたキーが必要です。

于 2013-08-26T03:34:30.380 に答える