【发布时间】:2014-11-13 12:36:35
【问题描述】:
背景
我一直在阅读 Todd Motto 的固执风格指南,特别是与路由器解析相关的部分 - 向下滚动到“Controller.resolve property:”部分:
https://github.com/toddmotto/angularjs-styleguide#routing-resolves
我一直不喜欢我在路由器定义中定义了解析逻辑这一事实,所以理论上非常喜欢这个解决方案,但在实践中,我不明白这怎么可能?
托德说:
'这使得解析依赖关系与控制器和路由器在同一个文件中不受逻辑影响'
所以我对此的理解 - 使用他的例子 - 是你将你的控制器逻辑定义在一个文件中(为了参数,controllers.js)定义为,
app.module('myapp')
.controller('MainCtrl', MainCtrl);
function MainCtrl() {
///some controller logic here
}
MainCtrl.resolve = {
someStuff: function() {
//resolve something here
}
}
然后在另一个文件 (routes.js) 中,
app.module('myapp')
.config(config);
function config ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controllerAs: 'vm',
controller: 'MainCtrl'
resolve: MainCtrl.resolve
});
}
为了防止污染全局范围,我假设这两个文件逻辑都在 IIFE 中。因此,MainCtrl 唯一存在的地方是 Angular 应用程序中的可注入值。而且由于您无法将控制器注入config,因此它无法知道MainCtrl 是什么,更不用说访问它的resolve 方法了。
问题
或者我是否遗漏了应该实施的方式?
【问题讨论】:
标签: angularjs