ディレクティブ内にHTMLコードの文字列を作成し、それをディレクティブのテンプレートとして使用しようとしています。ディレクティブ内にテンプレート文字列を作成する
私はこれを試しましたが、動作しません。
myApp.directive('myDirective', [function() {
return {
restrict: 'E',
scope: {
data: '=' // this is the data that will shape the HTML
},
template: str,
controller: function($scope){
$scope.str = ****BUILD THE STRING HERE USING 'data'****
}
};
}]);
は私がこれを行うことができます方法については困惑している
myApp.directive('myDirective', ['$scope', function($scope) {
var str = ****BUILD THE STRING HERE USING $scope.data****
return {
restrict: 'E',
template: str
};
}]);
をそれから私は、ディレクティブにアプリのスコープを渡してみましたが、再びエラーが発生しました。最初の例では文字列が正しく構築されており、私は
template: {{str}}
を行うとき、私は、文字列を参照しますが、明らかに、それだけでページ上のテキストとして表示され、それはHTMLコードとして解釈されていません。
ディレクティブのreturn文の中で、myAppまたはディレクティブコントローラのスコープにアクセスする方法はありますか?
ディレクティブの外側に文字列を作成することはできますが、それを行ってもディレクティブ内でmyAppのスコープにアクセスすることはできません。
$ scopeはサービスではありません。あなたは指示にそれを注入することはできません。テンプレートは静的な文字列で、スコープ内のデータに基づいて動的にHTMLを生成するために使用されます。テンプレートとして渡す前に文字列を動的に生成したいのはなぜですかあなたが達成しようとしているのは何ですか? –
要するに、私のアプリにはいくつかのデータがあります。ユーザーはデータの変化に応じて異なるHTMLが表示されるはずです。データを垂直に表示します。そうでない場合は、水平に表示されます。私はJSで文字列としてHTMLを構築しようとしています(if文とループを使用して)ビューに表示します。私が達成しようとしているのは、テンプレートそのものを動的にすることによって、HTMLをデータの変化に対応させることです。 – Sarp