外部モジュール を使用して、ネストされたディレクティブを使用して、コード形式のブロックに含まれる AngularJS ディレクティブangular-ui-codemirror
を表示しようとしています。$element.html()
ui-codemirror
私がこれを行う必要がある理由を知りたい場合は、こちらをご覧ください。
静的テキストでこれを行う方法を例から簡単に確認できます。そしてinnerHTML
、囲んでいるディレクティブの を問題なく渡すことができます。ui-codemirror
後でディレクティブにコンパイルされないだけです。
ここで、これを行うにはおそらくサービスを使用する必要があることがわかります$compile
が、その例をこの状況に適応させることはできません。
AngularJS コードの例を次に示します。
angular.module('articles', ['ui.codemirror']).directive('jsCode', function($compile) {
return {
restrict: 'E',
link: function($scope, $element) {
$scope.codeText = $element.html();
var template = '<div ' +
'ui-codemirror="{ ' +
'lineNumbers: true, ' +
'theme:\'twilight\', ' +
'readOnly: \'nocursor\', ' +
'lineWrapping: true, ' +
'mode: \'xml\'}" ' +
'ng-bind="codeText"></div>';
var linkFn = $compile(template);
var content = linkFn($scope);
$element.replaceWith(content)
}
};
});
そしてhtml:
<js-code>
<html style="color: green">
<!-- this is a comment -->
<head>
<title>HTML Example</title>
</head>
<body>
The indentation tries to be <em>somewhat &quot;do what
I mean&quot;</em>... but might not match your style.
</body>
</html>
</js-code>
私のジレンマを説明するために、このプランカーを作成しました。最初のブロックはフォーマットされていません。2 番目のブロック (静的) がフォーマットされます。