向AngularJS服务添加属性

时间:2014-08-15 06:25:01

标签: javascript angularjs

我有一个AngularJS服务,如下所示:

angular.module('myModule', [])
  .factory('$myService', function () {    
    return {
      getName: function () {
        return 'Bill';
      },

      isAvailable: function () {
        return true;
      }
    };
  })
;

有没有办法添加属性?目前,该服务具有功能(aka $myService.isAvailable())。我很好奇,有没有办法像$myService.someProperty这样的东西?如果是这样,怎么样?或者,服务中的所有内容都必须是一个功能吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

是的,您只需在返回的对象中添加属性

即可
angular.module('myModule', [])
  .factory('$myService', function () {    
    return {
      getName: function () {
        return 'Bill';
      },

      isAvailable: function () {
        return true;
      },

      someProperty: 'New Property'
    };
  });

答案 1 :(得分:1)

使用Revealing Module Pattern时,您可以轻松封装数据并仅公开您在公共API中所需的属性/功能:

angular.module('myModule', [])
  .factory('$myService', function () {   
    var name = { name: 'John' };
    var phone = { phone: '555-5555'};
    var SSN = 123456789;
    var address = '5555 Rd Blvd.';
    var available = { isAvailable: false };

    return {
      getName: function () {
        return name;
      },

      isAvailable: function () {
        return available;
      }

      name: name,
      phone: phone,
      address: address
    };
  })
;