我有一个元素指令,我想知道我是否可以从routeProvider获取参数来渲染我的模板并在我的控制器中设置它。
adminDash.directive('hospitals', function() {
return {
restrict: 'E',
templateUrl: 'www/partials/admin/hospitals.html',
controller: 'AdminHospitalsController',
controllerAs: 'hospitalsCtrl',
};
});
如何在element指令中获取任何参数?
答案 0 :(得分:1)
您可以隔离指令的范围,如下所示:
adminDash.directive('hospitals', function() {
return {
restrict: 'E',
templateUrl: 'www/partials/admin/hospitals.html',
controller: 'AdminHospitalsController',
controllerAs: 'hospitalsCtrl',
scope: {
paramValue: '&',
paramVariable: '=',
},
};
});
答案 1 :(得分:0)
有两种方法:两种方法都涉及使用$routeParams服务,它允许您检索当前的路由参数集。
鉴于您在http://example.com/#/hospitals/foobar
中配置了网址/hospitals/:hospital/
和路由$routeProvider
,您可以:
1.将$ routeParams注入您的指令:
adminDash.directive('hospitals', function($routeParams) {
return {
restrict: 'E',
templateUrl: 'www/partials/admin/hospitals.html',
controller: 'AdminHospitalsController',
controllerAs: 'hospitalsCtrl',
link: function(scope, element){
scope.hospital = $routeParams.hospital;
}
};
});
2.将$ routeParams注入AdminHospitalsController
adminDash.controller('AdminHospitalsController', function($scope, $routeParams) {
$scope.hospital = $routeParams.hospital;
}
这两种方法都会导致你的指令范围内有hospital=foobar
;