我收到一條指令,加載不同的模板,具體取決於傳遞給它的變量類型。我將這個指示的範圍傳遞給變量患者和服務。將變量傳遞給指令中的動態控制器AngularJS
.directive('serviceCharts', serviceCharts);
function serviceCharts() {
return {
restrict: 'E',
link: function (scope, element, attrs) {
if(attrs.type) {
scope.template = 'views/' + type + '.html';
}
attrs.$observe('type', function (type) {
if(attrs.type) {
scope.template = 'views/' + type + '.html';
}
});
},
template: '<div ng-include="template"></div>',
scope:{
patient:'=',
service:'='
}
};
}
在模板(視圖/ myservice.html例如)予加載控制器:
<div ng-controller="myCtrl as vm">
VIEW
</div>
而在控制器(myCtrl)我訪問至患者及服務這種方式:
service = $scope.$parent.$parent.service;
patient = $scope.$parent.$parent.patient;
這很好,但我不喜歡這種通過$ parent。$ parent訪問變量的方式。這也與我的測試有關。
是否有另一種(更好)的方法來做到這一點?
謝謝!
感謝您的回答。你是對的,服務是存儲這些變量的方式,但至少我需要從路由中獲得的「患者」和「服務」的ID。 而且你對控制器和控制器也是這樣,但是我可以使這些動態變化與「類型」的值? – Luisma
@Lisis取決於設置這些模板的內容。在大多數情況下,我會建議使用路由器,它可以根據路線顯示不同的模板。另外,正如Pankaj所說,一個搶劫者真的會有所幫助。 –