我正在尝试以角度为$ http创建自定义包装器。这是代码大纲:
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;
}
]);
但是示例代码如下:
app.factory("label", ["jotted_resource", function(jotted_resource) {
var label = jotted_resource("api/labels");
var all = label.query();
...
引发错误说:
TypeError:对象函数jResource(value){ ...}没有方法'查询'
我担心我对JavaScript的对象/函数/原型的所有复杂性的了解还不足以解决这个问题。请指出我该如何修复代码。
答案 0 :(得分:1)
这是一个纯JavaScript问题。由于label
是一个函数,您需要使用new
关键字来创建一个对象,以便使原型继承工作。
var all = (new label()).query();