2016-12-09 4 views
0

実際に直接ディレクティブを呼び出すのではなく、JSON配列の名前を使用してカスタムディレクティブを呼び出そうとしています。たとえば、私はAccessibilityRadioというカスタムディレクティブを使用して、ラジオボタンを動的に作成します。 < {{field.customDirectiveName}}>を使用してJSON配列の値をプルしてカスタムディレクティブを呼び出したいとします。問題は、私がこれを行うとき、ブラウザーのアクセス権 - 無線でカスタムディレクティブの名前しか見ることができないということです。したがって、JSON配列に$ scope.test.fields [{"customDirectiveName": "accessibility-radio"}]というようなものがあります。JSON配列からAngularJSのカスタムディレクティブを呼び出すことはできますか?

フォームからカスタムディレクティブを直接呼び出すのではなく、カスタムディレクティブをjson値として呼び出すことは可能ですか?これを行うより良い方法はありますか?ありがとうございました

+0

あなたの投稿を何度も読んだことがありますが、あなたが何を求めているのかまだ分かりません。カスタムディレクティブでコンテンツを動的に変更したいのですか? – RamblinRose

答えて

0

$ compileサービスを使用して、他のディレクティブを含むコンテンツのオンザフライ変更を処理したいとします。

Here's a trivial example異なるディレクティブで内容を変更しています。

コードの要点は、wrapperディレクティブで、内部コンテンツを$ compileサービスを介して 'directiveName'という名前の要素に置き換えます。

.directive("wrapper", function($compile, $interval) { 
    return { 
     scope: { 
     directiveName: "=" 
     }, 
     link: function(scope, elem, attrs) { 
     scope.$watch("directiveName", function() { 
      var html = "<" + scope.directiveName + "></" + scope.directiveName + ">"; 
      elem.html(html); 
      $compile(elem.contents())(scope); 
     }); 
     } 
    } 
    }) 

ラッパーディレクティブはscope.directiveNameが変化したときにそのラッパーディレクティブは名前= scope.directiveNameと要素との内容を置き換え、コンテンツをコンパイルし、$ scope.directiveName上の変化を検出するために見て使用しています。

+0

これはすばらしい答えです。どうもありがとうございました。ドロップダウンやその他のフォーム要素にng-repeatを追加したい場合はどうすればいいですか?何が渡される必要がありますか?スコープ変数からng-repeatを使用してドロップダウンに値を設定する際に問題が発生しています。テンプレートからhttp://plnkr.co/edit/93xN6ZlVcsfML1lVSx5c?p=previewを使用して問題が発生しているので、例を挙げてください。あなたの答えをありがとうと私を正しい方向に向ける。 –

+0

私は別の質問がありました。ラッパー・ディレクティブに加えて新しいコントローラーを作成する代わりに、ラッパー・ディレクティブを使用して、異なるディレクティブを交互に使用することなく、既存のカスタム・ディレクティブを呼び出す場合はどうなりますか?つまり、ラッパーからカスタムディレクティブの名前を渡し、コントローラ内にない別のディレクティブであるカスタムディレクティブを表示したかったのです。
のようなもので、特定のコントローラーからではなくページからの別のカスタム指示に基づいてhtmlが構築されます。 –

+0

うれしかったので、それを答えとして受け入れることを検討してください。 – RamblinRose

関連する問題