【问题标题】:Getting Error: Unkown provider: $urlMatcherFactory出现错误:未知提供者:$urlMatcherFactory
【发布时间】:2014-11-27 15:55:08
【问题描述】:
Unkown provider: $urlMatcherFactory 

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

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

我需要这样做:

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

this example 所示。

通常这样的代码不会识别$urlMatcherFactory。因此,我尝试将其作为对配置的依赖项进行注入,但随后出现此错误。

【问题讨论】:

    标签: javascript angularjs angular-ui-router


    【解决方案1】:

    在此问答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(见末尾的Provider

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

    Configuring Providers

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

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

    【讨论】:

    • 我用谷歌搜索了很多,但从来没有得到这个!虽然看起来很丑,但这样使用 stateproviderref。
    • ;) ;) ;) 会同意...是的。直到您/我们找到更好的方法……这应该可以满足我们的需求;)
    • 非常感谢下一个遇到相同问题的人将访问此链接,而不是在万维网的各个角落徘徊!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2013-01-25
    相关资源
    最近更新 更多