2015-09-14 38 views
0

我正在嘗試使用ODataAngularResources。我閱讀文檔並按照它的顯示方式here。以下是我使用它的方式。

$scope.claims = $odataresource("/odata/DeniedClaims") 
        .odata().withInlineCount().take(20).query(); 

在Chrome瀏覽器開發的Network顯示的數據,但我仍然得到以下錯誤:

Error: [$resource:badcfg] http://errors.angularjs.org/1.4.5/$resource/badcfg?p0=Error%20in%20resource…4=GET&p5=%2Fodata%2FDeniedClaims%3F%24top%3D20%26%24inlinecount%3Dallpages 

爲什麼會出現這個錯誤,我怎麼能解決這個問題?數據以JSON形式從服務器發送。當我在瀏覽器中輸入​​時,我將所有數據都作爲json數組。

+0

錯誤消息中的鏈接告訴你爲什麼:「$ resource服務期望可以作爲數組反序列化但是接收對象的響應,反之亦然時發生此錯誤。默認情況下,所有資源操作都需要對象,除了需要數組的查詢外。「 – Starscream1984

+0

對。我在文檔中也閱讀了那篇文章,但是我無法分辨爲什麼我從代碼中得到這個錯誤。除了我展示的用於檢索數據的代碼外,我的代碼中沒有其他內容。它只使用ODataAngularResources從服務器獲取數據。我怎樣才能反序列化爲一個數組?我認爲我所需要做的就是從服務器檢索數據。服務器使用json發送。 – user1828605

+0

我收到的格式(如Chrome網絡標籤所示)就是這樣的:'odata.metadata:「http:// localhost:58891/odata/$ metadata#DeniedClaims」,...} odata.metadata :「http:// localhost:58891/odata/$ metadata#DeniedClaims」 value:[{id:14,AuthID:「1111223223」,狀態:「DENIED」,EffectiveDate:「2015-08-10T00:00:00 「,...},...]' – user1828605

回答

0

我一定是在.Net中使用舊版本的OData。我卸載並重新安裝了OData,並將其設置爲using System.Web.OData而不是using System.Web.Http.OData。我還將路由配置從config.Routes.MapODataRoute("odata", "odata", GetEdmModel())更改爲config.MapODataServiceRoute("odata","odata",GetEdmModel())。然後,我只需從AngularJS控制器中刪除withInlineCount()。這對我有效。我仍不確定爲什麼前一個會在$resource中導致錯誤。

相關問題