Я пытаюсь использовать внешний модуль, angular-ui-codemirror
, чтобы отобразить $element.html()
из директивы ограждающих AngularJS в блоке кода в формате, используя вложенную директиву ui-codemirror
.
Если вы хотите знать, зачем мне это нужно, посмотрите here.
Я могу легко увидеть из примеров, как это сделать со статическим текстом. И я могу передать innerHTML
прилагаемой директивы в порядке. Он просто не компилируется впоследствии в директиву ui-codemirror
.
Я вижу, here, что для этого, вероятно, необходимо использовать сервис $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>
this Plunker Я создал, чтобы проиллюстрировать мою дилемму. Первый блок неформатирован. Отформатирован второй блок (статический).
ли лет Вам нужно/нужно связать html с помощью переменной 'codeText'? Другими словами, изменится ли содержимое этой переменной вне элемента? Если нет, вы можете просто использовать '$ element.html()' при построении строки шаблона, но я думаю, что что-то внутри библиотеки codemirror lib полагается на элемент, уже находящийся в dom, поэтому он не работает полностью правильно, даже после вы щелкаете внутри него. См. Это http://plnkr.co/edit/2d3Y8Ic9XFbsloBgT7wv?p=preview – JoseM