2015-04-21 6 views
1

Например, у нас есть это заводское обслуживание, эта служба получит и задаст первое имя пользователя.Могу ли я использовать сервисные функции Factory в заводских условиях?

app.factory('userService',['$rootScope',function($rootScope){ 
     var user = {}; 
     return { 

      getFirstname : function() { 
      return user.firstname; 
      }, 

      setFirstname : function (firstname) { 
      user.firstname = firstname; 
      $rootScope.$broadcast("updates"); 
      } 

     } 
     }]); 

Могу ли я использовать функцию getFirstname внутри этой службы? Если смогу, то можете ли вы показать мне, как это сделать?

ответ

0

Да, если вы сломаете свой javascript на части. Вместо того, чтобы определять функцию внутри возвращаемого объекта, просто назначьте ее переменной заранее. Затем вы можете использовать функцию внутри фабрики. Просто не забудьте назначить функцию возвращаемому объекту в конце.

app.factory('userService', ['$rootScope', function ($rootScope) { 
    var user = {}; 
    var getFirst = function() { 
     return user.firstname; 
    }; 
    //Do anything else with getFirst 

    return { 
     getFirstname: getFirst, //assign the function to the factory return obj 

     setFirstname: function(firstname) { 
      user.firstname = firstname; 
      $rootScope.$broadcast("updates"); 
     } 
    }; 
}]); 
+0

О, это верно, спасибо человеку: D – devadnqpnd

0

Я думаю, что есть лучший способ сохранить сервисный код организованным и чистым.

CoffeeScript:

app.factory 'userService', [ 
    '$rootScope' 
    ($rootScope) -> 
    service = 
     user: null 

     getFirstName: -> 
     service.user.firstname 

     getLastName: -> 
     service.user.firstname 

     setFirstName: (firstname) -> 
     service.user.firstname = firstname 
     $rootScope.$broadcast 'updates' 
     return 

     getDisplayName: -> 
     service.getFirstName() + service.getLastName() 
] 

Javascript:

app.factory('userService', ['$rootScope', function($rootScope){ 
    var service = { 
    user: null, 

    getFirstName : function() { 
     return service.user.firstname; 
    }, 

    getLastName : function() { 
     return service.user.firstname; 
    }, 

    setFirstName : function (firstname) { 
     service.user.firstname = firstname; 
     $rootScope.$broadcast("updates"); 
    }, 

    getDisplayName: function() { 
     return service.getFirstName() + service.getLastName(); 
    } 
    } 
    return service; 
}]); 
Смежные вопросы