我收到一条指令,加载不同的模板,具体取决于传递给它的变量类型。我将这个指示的范围传递给变量患者和服务。将变量传递给指令中的动态控制器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所说,一个抢劫者真的会有所帮助。 –