15

私は角度ディレクティブのセットに取り組んでおり、属性の存在または値に基づいて正しいテンプレートをロードしたいと考えています。

<my-form horizontal> </my-form>
<my-form vertical> </my-form>

水平の場合は templateUrl である必要が/partials/horizontal-formあり、垂直の場合は templateUrl である必要があります/partials/vertical-form

templatehtmlは属性依存で使えないのでtemplateUrlに興味があります。関数ではcompile.pre、html が既に読み込まれています。

これを達成する別の方法がある場合は、角度を付けて開始しているので、情報が多ければ多いほど良いので、私はそれを受け入れます。

ありがとう

4

2 に答える 2

22

参考までに、これはangular 1.1.4で適切に修正されました

関数を templateUrl に渡すことができます。入力パラメータは要素、属性です。文字列 (使用する templateUrl) を返します。

ドキュメントはこちら: http://code.angularjs.org/1.1.4/docs/guide/directive

于 2013-05-13T09:16:47.820 に答える
11

これに対する解決策の 1 つは、テンプレート ファイル内で ng-include を使用することです。

テンプレート ファイル内の最初の属性は次のようになります。

<div ng-include = "getTemplate()">

</div>

ディレクティブ コードでは、次のように記述します。

scope : {direction : "="},
link : function(scope,element,attrs)
{
    scope.getTemplate = function(){
        if(scope.direction === "horizontal")
        {
            return "horizontal.html";
        }
        return "vertical.html";
    }
}

お役に立てれば!

于 2012-09-17T08:08:21.307 に答える