Javascript 从元素指令中的routeProvider获取参数
我有一个元素指令,我想知道我是否可以从routeProvider获取参数来呈现我的模板并在我的控制器中设置它Javascript 从元素指令中的routeProvider获取参数,javascript,angularjs,Javascript,Angularjs,我有一个元素指令,我想知道我是否可以从routeProvider获取参数来呈现我的模板并在我的控制器中设置它 adminDash.directive('hospitals', function() { return { restrict: 'E', templateUrl: 'www/partials/admin/hospitals.html', controller: 'AdminHospitalsController',
adminDash.directive('hospitals', function() {
return {
restrict: 'E',
templateUrl: 'www/partials/admin/hospitals.html',
controller: 'AdminHospitalsController',
controllerAs: 'hospitalsCtrl',
};
});
如何在我的元素指令中获取任何参数?您可以隔离指令的范围,如下所示:
adminDash.directive('hospitals', function() {
return {
restrict: 'E',
templateUrl: 'www/partials/admin/hospitals.html',
controller: 'AdminHospitalsController',
controllerAs: 'hospitalsCtrl',
scope: {
paramValue: '&',
paramVariable: '=',
},
};
});
检查此项以更好地理解有两种方法可以做到这一点:两种方法都涉及使用允许您检索当前路线参数集的服务 假设您有一个url:
http://example.com/#/hospitals/foobar
和在$routeProvider
中配置的路线/hospitals/:hospital/
,您可以:
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