2013-10-22 76 views
0

我想使用AngularJS檢索JSON數組(字符串列表)。我創建了一個資源,就像這樣:AngularJS資源將無法與陣列

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。我得到:

  • 約翰
  • 項目

所以看來有事不能處理數組,並軋液成一個對象。我無法弄清楚什麼 - 所有的Angular文檔都顯示了使用數組的資源和範圍,並且因爲他們不這樣做。我明確地將isArray: true標誌添加到我的資源定義中,但沒有運氣。

我正在使用Angular版本1.0.8。我是一個完整的新手,所以這可能是一件很痛苦的事情,但我一直試圖讓這個工作一天以上。

+2

什麼是列表,如果不是數組,用JSON術語? – mnemosyn

+1

如何,確切地說,是一個不同於數組的列表? – Snowburnt

+0

對不起,我是JavaScript和JSON的新手 - 這是我認爲是一個數組{「name」:「John」,「age」:20},而列表將是[1,2,4,6] 我使用錯誤的術語嗎?我使用JSON序列化器來產生我的輸出,所以我認爲我錯了,它是有效的JSON,是嗎? 好吧,我只是谷歌搜索 - 顯然我應該說對象而不是數組,而不是數組。抱歉!我現在不能編輯標題... –

回答

0

isArray = true表示您的json數據看起來像一個對象數組,也就是一個列表。數組中的每個項目都必須是一個對象。所以你的json數據需要[{name:value,name2:value2},{etc},{etc}]。

isArray = false表示您的json數據是單數對象。

這是表示$資源被設計用於處理的寧靜數據的標準方式。

+0

感謝您提供答案 - 我一直在尋找其他框架,並注意到數據表示方式的類似模式,因此我將重新編寫代碼以提供更常見格式的數據。 –

+0

很高興我能幫到你。 :-) – Noishe