2

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 コンソールでコードを確認していると、無限ループに陥っていました。

4

1 に答える 1