获取错误:未知提供者:$ urlMatcher Factory

时间:2014-11-27 07:46:15

标签: javascript angularjs angular-ui-router

Unkown provider: $urlMatcherFactory 

当我尝试在app配置中注入$ urlMatcherFactory时,这是Angular抛出的错误消息。

我已经包含了ui-router JS文件,并且在过去的几个月里一直在使用它。

我需要做这样的事情:

var dateMatcher = $urlMatcherFactory.compile("/day/{start:date}");
$stateProvider.state('calendar.day', {
    url: dateMatcher 
});

正如this example所示。

通常这样的代码不会识别$urlMatcherFactory。所以我尝试将其作为对配置的依赖注入,但后来我得到了这个错误。

1 个答案:

答案 0 :(得分:2)

在此问答Matching url with array list of words in AngularJS ui-router中,您可以看到如何使用$urlMatcherFactory。也是指向working plunker的链接。

在该示例中,$urlMatcherFactory中使用了.run()

  .run(['$urlMatcherFactory',
    function($urlMatcherFactory) {

      var sourceList= ['John', 'Paul', 'George', 'Ringo']
      var names = sourceList.join('|');
      var urlMatcher = $urlMatcherFactory.compile("/{source:(?:" + names + ")}/:id");

      $stateProviderRef 
        .state('names', { 
          url: urlMatcher,
          templateUrl: 'tpl.root.html',
          controller: 'MyCtrl'
        });
    }
  ]);

这也意味着,如果你要在配置阶段使用它,你应该要求 $urlMatcherFactoryProvider(请参阅最后的提供商

但是:在配置阶段使用提供商意味着 - 我们可以配置它们。我的意思是配置提供商本身。稍后可在运行阶段评估(已配置)

Configuring Providers

  

您可能想知道为什么如果工厂,价值等更容易,有人会费心使用提供方法设置一个成熟的提供商。答案是提供商允许大量配置。我们已经提到过,当您通过提供程序(或Angular为您提供的任何快捷方式)创建服务时,您将创建一个新的提供程序,用于定义该服务的构造方式。我没有提到的是,这些提供程序可以注入应用程序的配置部分,以便您可以与它们进行交互!

     

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