Javascript 尝试调用工厂方法
我得到以下错误: TypeError:MyTheme.register不是函数 因为我正试图从我的controllers文件夹中的包调用此函数。我试过:Javascript 尝试调用工厂方法,javascript,angularjs,mean-stack,mean.io,Javascript,Angularjs,Mean Stack,Mean.io,我得到以下错误: TypeError:MyTheme.register不是函数 因为我正试图从我的controllers文件夹中的包调用此函数。我试过: vm.register = function() { MyTheme.register(this.user); }; 我也试过: vm.register = function() { MyTheme.prototype.register(this.user); }; 我的两次尝试都没有成功 该函数位于services/myT
vm.register = function() {
MyTheme.register(this.user);
};
我也试过:
vm.register = function() {
MyTheme.prototype.register(this.user);
};
我的两次尝试都没有成功
该函数位于services/myTheme.js中的my package中:
'use strict';
angular.module('mean.myTheme').factory('MyTheme', [
function() {
MeanUserKlass.prototype.register = function(user) {
$http.post('/api/register', {
email: user.email,
password: user.password,
confirmPassword: user.confirmPassword,
username: user.username,
name: user.name
})
.success(this.onIdentity.bind(this))
.error(this.onIdFail.bind(this));
};
return {
name: 'myTheme'
};
}
]);
您需要在返回对象中公开函数,或者可能只是返回MeanUserKlass对象。这里有一篇关于工厂和原型的文章:您需要这个:
var module = angular.module('MyModule');
module.factory('MyFactory', function () {
return { // all of this will be available, when you inject MyFactory
someFoo: function () {}
}
});
module.controller('MyCtrl', ['MyFactory', function (MyFactory) {
MyFactory.someFoo(); // available now
}])