Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度工厂:如何在声明的对象中使用方法?_Javascript_Angularjs_Factory - Fatal编程技术网

Javascript 角度工厂:如何在声明的对象中使用方法?

Javascript 角度工厂:如何在声明的对象中使用方法?,javascript,angularjs,factory,Javascript,Angularjs,Factory,我正在为我的angular应用程序创建工厂。 我在问如何在我声明的同一工厂中使用方法(此处setCurrentUser()): app.factory('User', function ($rootScope) { var User = { create: function (authUser, username) { // ... setCurrentUser(username); // <== ERROR }); },

我正在为我的angular应用程序创建工厂。
我在问如何在我声明的同一工厂中使用方法(此处
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谢谢你!:)你能解释一下为什么这值得投反对票,这样我才能改进它吗?谢谢你:)你能解释一下为什么这值得投反对票,这样我才能改进它吗?谢谢你:)