2 つのディレクティブで構成されるスーパー ディレクティブがあります。2 番目の「子」ディレクティブは、新規追加ダイアログ コントロールです。
プランカーは次のとおりです。
http://plnkr.co/edit/b6G2y3yqjhxpu059ZrWB
スーパー ディレクティブ "selectAddNew" の下から 3 行目を調べると、次のコードが表示されます。
<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 コンソールでコードを確認していると、無限ループに陥っていました。