Kia*_*Rad 21 javascript angularjs angularjs-routing
我目前有一个内置路由的AngularJS应用程序,它与静态controller
属性赋值完美配合.但我真正想做的是动态分配不同路径的控制器:
$routeProvider
.when("/Dashboards/:dashboardName",{
templateUrl:function(params) {
return "Dashboards/" + params.dashboardName;
//some ASP.NET MVC calls to return partial views (this part works)
}
})
Run Code Online (Sandbox Code Playgroud)
我想做的是在controller
这里对我的财产做同样的事情,比如:
$routeProvider
.when("/Dashboards/:dashboardName",{
templateUrl:function(params) {
return "Dashboards/" + params.dashboardName;
//some ASP.NET MVC calls to return partial views (this part works)
},
controller: function(params) {
return params.dashboardName+"Controller"; (this part DOESN'T work)
}
})
Run Code Online (Sandbox Code Playgroud)
但似乎我得到一个错误说paramsProvider
找不到
那么有什么方法可以在路由配置中动态加载我的控制器功能名称?
Bra*_*ger 11
这可以使用角度ui路由器.
ui-router允许您指定"controllerProvider"以指定用于提供控制器的功能.所以解决方案看起来像这样:
$stateProvider
.state("/Dashboards/:dashboardName",{
templateUrl:function($stateParams) {
return "Dashboards/" + $stateParams.dashboardName;
},
controllerProvider: function($stateParams) {
return $stateParams.dashboardName+"Controller";
}
})
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助!
我没有在$ routeProvider中指定控制器,而是将其放在templateURL中指定的文件中,从而解决了这个问题.
$routeProvider
.when("/Dashboards/:dashboardName",{
templateUrl:function(params) {
return "Dashboards/" + params.dashboardName;
}
})
Run Code Online (Sandbox Code Playgroud)
在 DashboardsNAME.html
<div class="container" ng-Controller='DashboardsNAMEController'>Food</div>
Run Code Online (Sandbox Code Playgroud)
此技术仍需要在路由实例化之前的某个时刻进行注册DashboardsNAMEController
.我怀疑最好的地方是在module.run()
调用你自己的服务的方法,但我在我的主控制器中这样做,因为它工作,无论如何是一个短控制器.
归档时间: |
|
查看次数: |
18534 次 |
最近记录: |