在Angular JS中,如何在module.config中访问自定义提供程序的功能?

时间:2015-09-18 11:24:29

标签: angularjs

我想在配置部分访问自定义提供程序的功能。怎么做?

MasterApp.js

var masterapp= angular.module("masterapp",[]);

masterapp.value('homeurl', 'workbench');   // value will be dynamically generated.

masterapp.provider('masterprovider', function() {

 this.$get = function(homeurl) {

     return {
         makeurl: function(userFileLoc) {
              return homeurl+userFileLoc;
         }
     }
 }; 
});

userapp.js

//接下来是错误的方法。怎么做到这一点?

    var userApp= angular.module('userApp',[
        'ngRoute',
        'masterapp'
    ]);

    userApp.config(['$routeProvider', 'masterprovider'
      function($routeProvider, masterprovider) {
        $routeProvider.
          when('/', {
            templateUrl: masterprovider.makeurl('something.html'),
            controller: 'myCtrl'
          }).

       otherwise({
            redirectTo: '/'
          });
      }]);

1 个答案:

答案 0 :(得分:2)

您正尝试访问Factory方法。试试这个:

 masterapp.provider('masterprovider', function() {

    var homeurl = "workbench";

    this.makeurl = function(userFileLoc) {
        return homeurl + userFileLoc;
    };

    this.$get = function() {
        return {
            otherFactoryFn: function() {}
        }
    };
});

来自Angular documentation

  

提供者配方在语法上定义为自定义类型   实现$ get方法。这个方法就像工厂一样   我们在工厂配方中使用的那个。实际上,如果你定义一个工厂   recipe,一个空的Provider类型,$ get方法设置为你的   工厂功能是在引擎盖下自动创建的。