我正在尝试使用指令构建动态控件。
<div ng-repeat="k in m.Array1" style="padding-left:30px">
<div ng-repeat="l in k.Array2.Array3">
<div control-picker var1="l" var2="k.Array2.Array3">
</div>
</div
</div>
html如上所示。
我能够在指令范围内使用var 1和var 2,但不能进入templateURL函数参数
.directive('controlpicker', function () {
return {
scope: { var1: '=', var2: '=' },
templateUrl: function (elem, attr) {
if (scope.var1.prop1 == 'MC') {
return 'MultipleChoice.html';
}
else {
return 'Default.html';
}
} }; });
我尝试了诸如attr.var1.prop1之类的所有可能方式的scope.var1.prop1,但在这种情况下var1就像一个字符串。我怎样才能实现它(我需要将范围发送到html)
答案 0 :(得分:1)
你无法获得scope
。对于动态模板,您需要使用controller
:
.directive('controlpicker', function () {
return {
template: '<ng-include src="getTemplateUrl()"/>',
scope: { var1: '=', var2: '=' },
controller: function($scope) {
$scope.getTemplateUrl = function (elem, attr) {
if ($scope.var1.prop1 == 'MC') {
return 'MultipleChoice.html';
} else {
return 'Default.html';
}
};
}
});