0

我正在尝试以角度为 $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 对象/函数/原型的所有复杂性的了解不足以解决这个问题。请指出我该如何修复代码。

4

1 回答 1

1

这是一个纯 JavaScript 问题。因为label是一个函数,你需要使用new关键字来创建一个对象,以使原型继承工作。

var all = (new label()).query();
于 2013-09-04T17:52:03.047 回答