2016-06-23 10 views
0

これは私の最初の質問です。状況を説明できることを願っています。012JAJangularJsのドキュメントhereは動的に返される関数としてdirective templateUrlを持っています。 Plunklerライブデモhereもあります。anglejsカスタムディレクティブのtemplateUrlを動的に変更する方法

.directive('....', function() { 
    return { 
    templateUrl: function(elem, attr){ 
     return **.... scope.Somthing ...**; 
    } 
    }; 
}); 

これまでに私が見つけた唯一の方法は、ディレクティブのスコープとの関連性を動的にTemplateUrlを設定することで機能がスコープパラメータを取らないと、これは主な問題

でこのよう

です
.directive('....', function() { 
    return { 
    link: function (scope, element, attrs) { 
     scope.getTemplateUrl = function() { 
     return **.... scope.Somthing ...**; 
     }; 
    }, 
    template: '<ng-include src="getTemplateUrl()"/>' 
    }; 
}); 

別の解決策は、私の最初の問題は、このことです

.directive('....', function() { 
    return { 
    controller: function ($scope) { 
     $scope.getTemplateUrl = function() { 
     return **.... scope.Somthing ...**; 
     }; 
    }, 
    template: '<ng-include src="getTemplateUrl()"/>' 
    }; 
}); 

です問題へのパッチのように見える

私の2番目の問題は、指示文でhtml文字列を構築する必要があります。

他の方法はありますか?

+0

私は 'ng-include'で関数呼び出しの代わりに変数を使用したいと思いますが、あなたがしていることはまったく問題ないと思います。ディレクティブにHTMLがあるのが不快な場合は、代わりにそのスニペットをファイルに保存することができます。これは '$ compile'を注入してテンプレートを動的にコンパイルするより簡単です。 – adam0101

答えて

0

は2つの問題のために、あなたの問題を分割することができます:D

まず問題がjsファイルにテンプレートを保存する程度です。

この問題は、$ templateCacheを使用して、あなたがこの

第二の問題についての詳細を読むことができ

<script id="myTemplate.html" type="text/ng-template"> <div> SOME MARKUP <div> </script> 

Hereを注入すると、動的なテンプレートについてです解決することができます。 2つの解決策があります(私が知っている限り:D) すでに言及した最初の解決策 - ng-includeを使用します。

第2の解決方法は、$compileを使用して、角度指示文で動的にHTMLをコンパイルすることです。

2番目のケースでは、メモリリークについて常に覚えておく必要があるため、最初の解決策は少し良くなります。ここをクリックしてくださいinfohere

+0

あなたの答えに感謝します。それは非常に有益です。だから私の欲求よりも良い方法はありませんか?角度のついたチームがテンプレートにスコープ属性を持つ関数を処理させてもらうことを願っています –

+0

角度のあるチームは角度2.0で作業していますので、 Angular 1ですぐに来るでしょう。 私の答えがあなたを助けてくれたら、回答としてマークしてください。 Ty。 – Vitalii

関連する問題