2015-09-14 28 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中导致错误。

相关问题