任何人都可以纠正我在这里做的事情
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');
答案 0 :(得分: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 );
答案 1 :(得分:0)
更改
var addVessel = ...
到
this.addVessel = ...
那应该解决它。
在前一种情况下,addVessel
是DataService
函数中的局部变量。而在后一种情况下,它是使用点表示法可访问的函数对象DataService
的成员。