我正在尝试创建一个AngularJS幻灯片应用,用户可以在projects/
目录中添加内容。
路由器已经使用了可变路由。
.when('/:project', {
templateUrl: function(params) {
return 'projects/' + params.project + '/project.html';
}
})
但是,我无法弄清楚如何使用变量控制器名称。例如,以下内容不起作用:
.when('/:project', {
templateUrl: function(params) {
return 'projects/' + params.project + '/project.html';
},
controller: function() { return 'SomeController'; }
})
但这样做:
.when('/:project', {
templateUrl: function(params) {
return 'projects/' + params.project + '/project.html';
},
controller: 'SomeController'
})
是否可以使用函数将控制器与路径相关联?
如果这听起来像一个愚蠢的想法,让我解释一下我想做什么。我没有让用户编辑MainController
,而是希望能够编写特定于项目的JavaScript。如果项目被删除,该项目的特定JavaScript也将被删除。如果添加了需要自定义JavaScript的新项目,则用户可以使用API(AngularJS Events)与UI进行交互。
做这样的事情的最佳方法是什么?
答案 0 :(得分:1)
UI路由器有controllerProvider
feature。 ngRoute没有它。
路由controller
中指定的函数是实际的控制器构造函数,它不能只返回控制器名称。 ngView
directive定义了路由控制器的实例化方式。如果不修补指令,可以使用以下方法模拟行为:
controller: function ($scope, $controller) {
return $controller('SomeController', { $scope: $scope });
}