【问题标题】:.config, .run, AppCtrl - where to put routes?.config、.run、AppCtrl - 在哪里放置路由?
【发布时间】:2013-08-10 00:29:49
【问题描述】:

我想找出 AngularJS 中 .config.run 函数之间的区别。我使用我的.config 设置路线,但我确实有一些$on 用于观看路线更改开始和成功事件。

然后我将其中一些代码移至.run,因为我在.config 中遇到了一些依赖注入问题。

我终于把其中的一部分移到了我在<body> 上设置的CommonAppController

我也有 2 个.config,它似乎运行正常,但这肯定不对吗?

谁能稍微介绍一下使用哪种方法?

【问题讨论】:

  • 您能分享一下您在通用控制器中是如何管理的吗?如果用户未通过身份验证,我尝试使用根控制器并重定向到登录页面。问题是子控制器仍在被调用。非常感谢任何帮助。

标签: angularjs angularjs-scope angularjs-routing


【解决方案1】:

配置块和运行块在应用程序引导程序中的不同点执行,并有不同的注入局部变量可供使用。以下是您可以在AngularJS documentation 中找到的内容的摘要。

配置块(使用module.config() 注册)在提供程序注册期间执行,并且只能注入提供程序和常量(请参阅module.provider()module.constant())。这通常是您配置应用程序范围的东西的地方,例如$routeProvider。在创建服务之前需要配置的东西。

运行块(在module.run() 注册)在注入器拥有所有提供程序后执行。现在,可以注入所有实例和常量。这通常是您配置服务、$rootScope、事件等的地方。

您可以有多个,它们按照它们在模块中注册的顺序执行。例如,有些人喜欢在每组控制器之前注册一个配置块来注册这些控制器的路由。

【讨论】:

  • 谢谢史蒂夫,很好的解释!所以关于观看事件 - 全局事件,如 changelocationstart 等...... Run 听起来是个好地方,但我实际上可以在 App Controllers 中做到这一点 - 有什么理由使用一个而不是另一个?谢谢
【解决方案2】:

.config 块在提供程序注册和配置阶段执行。这是一个模块级块。

.run 块在配置块之后执行。它用于注入服务和常量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多