【问题标题】:Angular custom module - "object function(){...} foo has no method 'bar'"Angular 自定义模块 - “object function(){...} foo has no method 'bar'”
【发布时间】:2013-09-04 17:26:21
【问题描述】:

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

【问题讨论】:

  • this.query() 应该做什么?

标签: javascript angularjs javascript-objects angularjs-module


【解决方案1】:

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

var all = (new label()).query();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多