0

谁能纠正我在这里做的事情

Uncaught TypeError: Object function DataService($scope) {
        this.$scope = $scope;

        // Members Area
        var addVessel = function (userId) {
            alert("user"+userId);
        };

    } has no method 'addVessel'

非常感谢 - 我是新手

在查看回复后,似乎问题嵌套得更高

这是命名空间/类

// Member Service Namespace
var MemberService;
(function (MemberService) {

// Member service type
var DataService = (function ($scope) {

    // Construct the data service
    function DataService($scope) {
        this.$scope = $scope;

        // Members Area
        this.addVessel = function (userId) {
            alert("user"+userId);
        };

    }

    return DataService;
})();
MemberService.DataService = DataService;

})(MemberService || (MemberService = {}));

这就是电话

MemberService.DataService.addVessel('XXX');
4

2 回答 2

5

您永远不会将该方法添加addVessel()到对象中,而只是将其用作对象范围内的“私有”方法。

改用这个:

function DataService($scope) {
    this.$scope = $scope;

    // Members Area
    this.addVessel = function (userId) {
        alert("user"+userId);
    };

}

编辑

您的错误似乎是,您创建了一个构造函数DataService,但从未真正调用此构造函数。

所以一个解决方案是改变这条线

MemberService.DataService = DataService;

进入

MemberService.DataService = new DataService( param );

这将创建您的新实例`DataService并将其附加到MemberService.DataService.

但是,如果您想创建多个实例,那么到目前为止您的代码是正确的,但是为了调用,您首先必须创建此构造函数的对象:

var myService = new MemberService.DataService( param );
于 2012-11-29T13:25:40.623 回答
0

改变

var addVessel = ...

this.addVessel = ...

那应该解决它。

在前一种情况下,addVesselDataService函数内部的局部变量。而在后一种情况下,它是DataService使用点符号可访问的函数对象的成员。

于 2012-11-29T13:26:00.493 回答