在使用模板定义路线时,基本上有两种方法可以设置与视图对应的控制器:
在路线中:
$routeProvider
.when('/phone/:phoneId', {
controller: 'PhoneDetailController',
templateUrl: 'phone.detail.html',
}
});
在模板中:
$routeProvider
.when('/phone/:phoneId', {
templateUrl: 'phone.detail.html',
}
});
<div ng-controller="PhoneDetailController">
<!-- [...] -->
</div>
有什么不同,推荐什么,为什么?
答案 0 :(得分:2)
如果查看ui-router源代码,在viewDirective.js内可以看到如何实例化控制器:
if (locals.$$controller) {
locals.$scope = scope;
locals.$element = $element;
var controller = $controller(locals.$$controller, locals);
if (locals.$$controllerAs) {
scope[locals.$$controllerAs] = controller;
}
$element.data('$ngControllerController', controller);
$element.children().data('$ngControllerController', controller);
}
所以基本上你的两个选择基本上都是一样的。所以这取决于你,以及你认为最好的语义。我个人更喜欢将我的控制器名称放在状态def中,因为我喜欢将模板保持为面向视图(并且可重用)。此外,它似乎是最常用的做事方式,因此其他人将能够更轻松地理解您的代码。
答案 1 :(得分:0)
我个人使用的是第一个版本,因为它具有更好的中央配置。我认为没有太大的区别,但是像Filype的评论中我经常看不到版本2.