0

AngularJS を使用して JSON 配列 (文字列のリスト) を取得しようとしています。次のようにリソースを作成しました。

packageResource.factory('Package', ['$resource', function($resource) {
    return $resource('/static/package.json', {}, {
        'get': {
            method: 'GET',
            transformResponse: function (data) {
                return angular.fromJson(data)
            },
            isArray: true
        }
    });
}]);

そして、私のコントローラーは次のようになります:

MainController = [
    '$scope', 'Package', function($scope, Saved, Rules) {
        $scope.package = (Package.get());
    }
];

そして私のテンプレート:

<ul>
    <li ng-repeat="item in package">{{item}}</li>
</ul>

<p> {{package}}</p>

package.json 配列内のすべてのアイテムのリストが表示されることを期待してから、テストのために を追加し{{package}}、内容を出力することを期待していましたが、代わりに次のようになりました。

  • {}
  • {}
  • {}
  • {}
  • {"0":"s","1":"r","2":"d"}

JSON ファイルには次のものが含まれます。

[1,3,6,"srd"]

ただし、package.json をオブジェクトに変更すると、完全に機能します。例えば:

{
  "author": "John",
  "name": "project",
  "version": 1
}

そしてもちろん、 に変更isArrayfalseます。私は得る:

  • ジョン
  • 事業
  • 1

そのため、何かが配列を処理できず、オブジェクトにマングルしているように見えます。私は何を理解するのに苦労しています - すべての Angular のドキュメントは Resource と Scope が配列で動作していることを示しています。isArray: trueリソース定義にフラグを明示的に追加しましたが、うまくいきませんでした。

Angular バージョン 1.0.8 を使用しています。私は完全な初心者なので、痛いほど明白なことかもしれませんが、これを1日以上機能させようとしています.

4

1 に答える 1

0

isArray=true は、json データがオブジェクトの配列、つまりリストのように見えることを意味します。配列内の各項目はオブジェクトでなければなりません。したがって、json データは [{name:value,name2:value2},{etc},{etc}] である必要があります。

isArray=false は、json データが特異なオブジェクトであることを意味します。

これは、$resource が処理するように設計された安静データを表す標準的な方法です。

于 2013-12-22T10:26:20.567 に答える