9

私は次のようなものを変換することになっているAngularJSの非常に単純なディレクティブを書いています:

<input type="text" name="FirstName" mydirectivename />

このようなものに:

<span><input type="text" name="FirstName" /></span>

ここにたどり着くのは簡単でした:

<span type="text" name="FirstName"><input/><span>

しかし今、私は雑草の中にいて、ドキュメンテーションが「あなたがする必要はめったにないはずだ」と言っていることを行うコンパイル関数を書いていて、私は軌道に乗っていないと思っています。テンプレート内の特定の要素がコピーされた属性のターゲットであることを示す簡単な方法はありますか?

ありがとう

4

3 に答える 3

0

ここでの簡単な例では、次のようなものを使用できます: http://plnkr.co/edit/BbwBLa?p=preview

plunker は元の要素をトランスクルージョンし、ラッピング要素内に再挿入します。

または、他の回答に従って、コピーするすべてのものを指定して、より詳細に制御します。

すべての属性をコピーする必要があり、最新の角度バージョン (1.1.4 以降、ドキュメントhttp://code.angularjs.org/1.1.4/docs/guide/directiveを参照) がある場合は、テンプレートを試すことができます。リンクに記載されている機能。これらには元の要素のすべての属性が与えられ、それらを使用して元の属性を持つ新しいテンプレートを作成できます。このようにテンプレート関数を使用することはお勧めしませんが、私の好みには少し面倒です。

編集

これは、リンク関数で、単純な例で必要なことを非常に簡単に行います。これは本当にコンパイルに含まれるべきだと思いますが、そこに入れるとプランカーが狂ってしまいました。http://plnkr.co/edit/PLfSU6?p=preview

于 2013-10-11T00:21:27.983 に答える
-2

どうですか :

.directive("mydirectivename", function ($state) {
        return {
            restrict: "A",
            replace: true,
            template: '<span ng-transclude></span>',
于 2015-09-09T16:10:08.903 に答える
-2

試す:

.directive("myDirective", function ($state) {
        return {
            restrict: "E",
            replace: true,
            controller: function(){},
            template: function (element, attrs) {}
于 2015-09-01T19:41:00.240 に答える