我在angular中遇到了一种情况,我想处理具有相同模式的单个路由,但为该路由加载的模板将是两个不同视图中的一个(根据特定路由确定服务器端)。我需要为两个不同的视图使用不同的角度控制器。
$routeProvider.when('/things/:whatever*.html'{templateUrl:函数(params){var info=getExtraInfo();return'/partials/things/'+params.anything+'.html';},控制器:?//这是我需要选择控制器的地方})
我使用了一个带有templateUrl属性的函数,因为我需要传递原始路由中的参数。在templateUrl函数中,我正在检索额外的信息,通过这些信息我可以确定要使用哪个角度控制器。这些信息是什么或来自哪里并不重要。
不幸的是,在配置路由提供程序时,似乎需要对控制器进行设置。
有什么方法可以处理这个问题吗?还是我只需要找到一种方法,在每种情况下使用相同的控制器?
只需省略控制器选项,让您的视图决定其控制器:
$routeProvider.when('/things/:whatever*.html', {
templateUrl: function(params) {
var info = getExtraInfo();
return '/partials/things/' + params.whatever + '.html';
},
resolve:{
users: function(){
//return a promise
}
}
});
Inside view1使用ng-controller
:包装所有内容
<div ng-controller="controller1">
...
</div>
Inside view2使用ng-controller
:包装所有内容
<div ng-controller="controller2">
...
</div>
如果您需要访问已解析的数据,只需注入$route
:
app.controller('controller1', function($scope, $route){
var users = $route.current.locals.users;
})