Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Angularjs 如何将“$urlRouterProvider”注入工厂?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 如何将“$urlRouterProvider”注入工厂?

Angularjs 如何将“$urlRouterProvider”注入工厂?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我已经关注了这篇文章,并设法弄明白了如何使用“$stateprovider”,但现在我对“$urlRouterProvider”有了问题 这是否意味着我也不能将“$urlRouterProvider”注入控制器,它应该只注入配置 我非常感谢在这个问题上的任何帮助 代码中有一个非常狭窄的片段: 这就是答案。在配置中,我们可以访问提供程序$urlRouterProvider的配置方法。稍后,在应用程序运行阶段,我们的服务/工厂将通过IoC提供配置的$get结果 有关详细信息,请参阅: 您可能想知道,

我已经关注了这篇文章,并设法弄明白了如何使用“$stateprovider”,但现在我对“$urlRouterProvider”有了问题

这是否意味着我也不能将“$urlRouterProvider”注入控制器,它应该只注入配置


我非常感谢在这个问题上的任何帮助

代码中有一个非常狭窄的片段:

这就是答案。在配置中,我们可以访问提供程序$urlRouterProvider的配置方法。稍后,在应用程序运行阶段,我们的服务/工厂将通过IoC提供配置的$get结果

有关详细信息,请参阅:

您可能想知道,如果工厂、值等更简单,为什么有人会费心用provide方法建立一个成熟的提供者。答案是提供者允许大量的配置。我们已经提到,当您通过提供者或Angular提供的任何快捷方式创建服务时,您将创建一个新的提供者,定义如何构造该服务。我没有提到的是,这些提供者可以被注入到应用程序的配置部分,这样您就可以与它们交互了

首先,Angular分两个阶段运行应用程序:配置阶段和运行阶段。正如我们所看到的,配置阶段是您可以根据需要设置任何提供者的地方。这也是设置指令、控制器、过滤器等的地方。正如您可能猜到的,运行阶段实际上是Angular编译DOM并启动应用程序的阶段

在这种情况下,您甚至需要稍后访问$stateProvider或$routeProvider配置。。。有一种方法。。。检查一下这个小家伙。很难说这是有角度的方式。。。但它正在发挥作用。在这里检查

尝试注入$urlRouter
$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider'];
function $UrlRouterProvider( $locationProvider, $urlMatcherFactory) {

// I. config
// these are CONFIGURATION methods 
// we can access in .config() phase
....

this.rule = function (rule) {
  ...
}
...
this.when = function (what, handler) {
  ...
}

...
// II. application run
// this is the service/factory/configured provider 
// injected in the .run() phase via IoC

this.$get = $get;
$get.$inject = ['$location', '$rootScope', '$injector', '$browser'];
function $get( $location, $rootScope, $injector, $browser) {
  ...
  return {
    sync: function() {
      ...
    },
    listen: function() {
      ...
}