具有角度布线的动态控制器选择



我在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;
})

最新更新