是的,您可以根据需要多次重复使用控制器和视图。如果我理解正确的话,您希望不同的路线使用相同的控制器和视图?这很容易。此外,您希望能够在触发路由时将变量传递到控制器吗?也容易。这是一个不使用的示例ui-router
.
angular.module('myApp').config(['$routeProvider', 'whiskeyList', appConfig]);
function appConfig($routeProvider, wiskeyList) {
$routeProvider
.when('/scotch', {
controller: 'whiskeyListCtrlr',
resolve: {
data: function(whiskeyList) {
return whiskeyList.getWhiskeys();
}
}
})
.when('/irish', {
controller: 'whiskeyListCtrlr',
resolve: {
data: function(whiskeyList) {
return whiskeyList.getWhiskeys();
}
}
});
}
显然,这个实现不是 DRY(Don't Repeat Yourself)。我会重新考虑你的实施。我会改变whiskeyList.getWhiskeys()
接受一个参数,告诉它要返回的威士忌类型。例如,whiskeyList.getWhiskeys('scotch')
。然后,您在控制器中收到的数据将被过滤为仅显示视图所需的数据。
路由器解析函数中映射的数据在控制器中通过名称进行访问。
whiskyControllers.controller('whiskyListCtrlr', ['$scope', 'data', function ($scope, data) {
$scope.whiskeys = data;
});