我有一个由 2 个指令组成的超级指令。第二个“子”指令是一个新增的打开对话框控件:
这是plunker:
http://plnkr.co/edit/b6G2y3yqjhxpu059ZrWB
如果检查超级指令“selectAddNew”,倒数第三行,您将看到以下代码:
<div txt-add-new text="{{text}}" action="openDialog(\'Front\')" style="display: inline-block"></div>
问题是action="openDialog(\'Front\')"是硬编码的。
超级指令的 html 是这样的:
<select-add-new select-model="$parent.selectedFrontAxle" text="add new"
select-phrase="Front Axle Type" preselected-filter="Front"
label-name="Front Axle" open-dialog="Front" <------ need to pass this value
select-options="axleTypes" var-ctrl="AxleTypesCtrl"></select-add-new>
如果我也有的话,我可以使用 OpenDialog 方法,但是参数 \'Front\' 需要从上面的 Html 的这一部分中获取它的值:
open-dialog="Front"
最初我尝试了这个(使其成为方法操作):
open-dialog="openDialog('Front')"
在我的指令中有这个:
.directive('', function(){
..........
scope: {
open-dialog: "&"
},
......
},
template: .....
'<div txt-add-new text="{{text}}" action="openDialog()" style="display: inline-block">
......
};
但是在 Chrome 控制台中查看代码时,我发现自己陷入了死循环