如何创建具有可变属性的Angular模块?

时间:2015-01-15 10:58:43

标签: javascript angularjs

我正在编写一个AngularJS模块,以便为与我的产品的REST API交互提供一些便利。由于我的产品是在内部部署的,因此每个用户都必须提供自己的URL以与API进行交互。因此,基本URL需要是可配置的。

我一直在研究$http设置默认标头的方法,以找出如何为配置这些属性制作一个漂亮的API,但运气不好。我想要实现的是这样的:

在我的api.js文件中:

angular.module('myProduct', [])
  properties.baseUrl = 'someDefault';
  properties.authenticationToken;

  authenticate = function(user, pass) {
    properties.authenticationToken = $http.get(properties.baseUrl + '/login');
  }

在客户的app.js文件中:

angular.controller('myController', ['myProduct'], function($myProduct) {
  // during initialization
  $myProduct.properties.baseUrl = 'customer.com/myProduct';

  // either during initialization, or after submitting a login form
  $myProduct.authenticate('username', 'password')
    .then(/* do some other API call */);
})

我的问题是:

  • 如何以一种漂亮,可配置的方式公开我的模块中的属性?
  • 如何在我的模块中公开authenticate函数,以便以一种很好的方式从客户的app.js中调用它?

我可能也会感谢任何我可能错过的Angular文档的链接。

1 个答案:

答案 0 :(得分:1)

一种角度方式是使用提供程序进行模块配置。

Here documentation

Here a nice example

这里有2个小提琴,1个用于使用defaultUrl和其他用于从客户端更改它。

[http://jsfiddle.net/r057c9o5/3/][3]
[http://jsfiddle.net/t5uf9jau/][4]