Javascript 角度工厂:如何在声明的对象中使用方法?
我正在为我的angular应用程序创建工厂。Javascript 角度工厂:如何在声明的对象中使用方法?,javascript,angularjs,factory,Javascript,Angularjs,Factory,我正在为我的angular应用程序创建工厂。 我在问如何在我声明的同一工厂中使用方法(此处setCurrentUser()): app.factory('User', function ($rootScope) { var User = { create: function (authUser, username) { // ... setCurrentUser(username); // <== ERROR }); },
我在问如何在我声明的同一工厂中使用方法(此处
setCurrentUser()
):
app.factory('User', function ($rootScope) {
var User = {
create: function (authUser, username) {
// ...
setCurrentUser(username); // <== ERROR
});
},
// ...
setCurrentUser: function (username) {
$rootScope.currentUser = User.findByUsername(username);
},
// ...
};
return User;
});
app.factory('User',函数($rootScope){
变量用户={
创建:函数(authUser、用户名){
// ...
setCurrentUser(用户名);//尝试在创建函数声明之前声明setCurrentUser函数。如果这没有帮助,可以使用以下技巧:
var that = this;
并在用户对象中调用setCurrentUser作为:
that.setCurrentUser
在创建函数声明之前,请尝试声明setCurrentUser函数。如果这没有帮助,可以使用以下技巧:
var that = this;
并在用户对象中调用setCurrentUser作为:
that.setCurrentUser
我会尝试使用一个闭包,因为在调用User.create()
User
时已经定义了,所以您可以调用setCurrentUser
User.setCurrentUser(username);
我会尝试使用一个闭包,因为在调用User.create()
User
时已经定义了,所以您可以调用setCurrentUser
User.setCurrentUser(username);
您可以改为使用函数作为本地变量,并返回User
对象(您的公共API),如下所示:
app.factory('User', function ($rootScope) {
var setCurrentUser = function (username) {
$rootScope.currentUser = ...
};
var create = function(authUser, username) {
// ...
setCurrentUser(username); // <== NO ERROR
};
return {
create: create,
setCurrentUser: setCurrentUser
};
});
app.factory('User',函数($rootScope){
var setCurrentUser=函数(用户名){
$rootScope.currentUser=。。。
};
var create=函数(authUser,用户名){
// ...
setCurrentUser(username);//您可以改为使用函数作为本地变量,并返回User
对象(您的公共API),如下所示:
app.factory('User', function ($rootScope) {
var setCurrentUser = function (username) {
$rootScope.currentUser = ...
};
var create = function(authUser, username) {
// ...
setCurrentUser(username); // <== NO ERROR
};
return {
create: create,
setCurrentUser: setCurrentUser
};
});
app.factory('User',函数($rootScope){
var setCurrentUser=函数(用户名){
$rootScope.currentUser=。。。
};
var create=函数(authUser,用户名){
// ...
setCurrentUser(用户名);//如何User.setCurrentUser
?切换方法的位置。在定义方法之前,您正在使用方法。@aduch:是的,它工作,简单有效(我的错我自己没有想到这个解决方案…:-()。关于User.setCurrentUser
?切换方法的位置。在定义方法之前,您正在使用一个方法。@aduch:是的,它工作,简单有效(我的坏消息是我自己没有想到这个解决方案…:-()。一个好的解决方案,比公认的解决方案更通用(虽然…:-)更优雅。@MarcoS谢谢你!:)一个很好的解决方案,比公认的解决方案更普遍(虽然更优雅…:-)。@MarcoS谢谢你!:)你能解释一下为什么这值得投反对票,这样我才能改进它吗?谢谢你:)你能解释一下为什么这值得投反对票,这样我才能改进它吗?谢谢你:)