我写了一个指令,它有一个postLink
,我编译了一些 html 代码并用 angularjs 渲染它。但问题是我无法从生成的 DOM 中获取 html 代码。
我的代码是:
app.directive("showResultAsText", ['$compile', function ($compile) {
return {
restrict: 'A',
compile: function compile(tElement, tAttrs, transclude) {
console.log('compile');
var watchModal = tAttrs["showResultAsText"];
var elem = jQuery(tElement);
var oriHtml = elem.html();
elem.empty();
return {
post: function postLink(scope, iElement, iAttrs, controller) {
scope.$watch(function () {
return scope.$eval(watchModal);
}, function (newVal) {
if (newVal) {
var s = $compile(angular.element(oriHtml))(scope);
console.log(s);
console.log(s[0]);
console.log(s[0].outerHTML);
console.log($('<div>').append(s[0]).html());
iElement.text(s[0].outerHTML);
}
});
}
}
}
}
}
你可以看到我用来console.log
打印的值s
。在控制台中,它输出:
您可以看到console.log(s)
并console.log(s[0])
拥有很多信息,但是当我使用 时outerHTML
,内部按钮都不见了。
我也尝试使用 jquery: jQuery(s[0]).html()
,但同样的事情发生了。
s
将其转换为 html 代码的正确方法是什么?