I have implemented Odata query syntax for my web api. I am successfully able to return only the first 10 results and the link for the further results. However I am unable to extract this link from the JSON object that is returned by the server using my angularjs front end.
Say the server is responding as follows:
{
"odata.metadata":"http://localhost:60497/odata/$metadata#tables","value":[
{
"id":001,"name":"abc"
},{
"id":002,"name":"pqr"
},{
"id":003,"name":"xyz"
},{
.
.
.
],"odata.nextLink":"http://localhost:60497/odata/tables?$skip=10"
}
Now I am displaying the data by using the success method of $http by assigning the returned data to a variable and using ng-repeat. I am assigning it as follows:
.success(function(data)){
$scope.foo = data.value;
}
However when I try to access the next link using:
$scope.link = data.odata.nextLink;
within the success method it gives me an error. What am I missing over here? How else can I access the link returned? Is there any other method to implement server side paging?
I had the same problem, more or less. I guess it has got to do with JavaScript objects and how their properties are referred to. The reference
data.odata.nextLink
would mean there is a property "odata" with a sub-property/field "nextLink". This is not the case, "odata.nextLink" is the name of the property. I don't know why OData is like this.
I got the contents of this property by using a string reference i.e.
data['odata.nextLink']
Don't know if there is some drawback, but seems to work...
using Newtonsoft.Json;
[JsonProperty("@odata.nextLink")]
public string nextPage { get; set; }
I got it to work using
theReturnedObject['@odata.nextLink']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With