I'm trying to create a custom wrapper for $http in angular. Here's the code outline:
angular.module('jotted_resource', ['ng'])
.factory('jotted_resource', ['$http', 'communicationStatus',
function($http, cs) {
function jResourceFactory(url){
function jResource(value){
var self = this;
this.query = function(callback){
var value = [];
return $http.get(url).then(function(response){
var data = response.data;
for(var i in data){
value.push(new jResource(data[i]))
}
});
return value;
}
}
return jResource;
}
return jResourceFactory;
}
]);
But example code like this:
app.factory("label", ["jotted_resource", function(jotted_resource) {
var label = jotted_resource("api/labels");
var all = label.query();
...
Throws an error saying:
TypeError: Object function jResource(value){ ...} has no method 'query'
I'm afraid that my knowledge on all the complexities of JavaScript's objects/functions/prototypes isn't sufficient enough to wrap my head around this issue. Please point out how can I fix the code.
This is a pure JavaScript issue. Since
label
is a function and you need to use thenew
keyword to create an object in order to make prototype inheritance work.