Javascript 如何在html中设置$compile代码

Javascript 如何在html中设置$compile代码,javascript,html,angularjs,angularjs-directive,angularjs-scope,Javascript,Html,Angularjs,Angularjs Directive,Angularjs Scope,我编译了一个字符串,但它不是像dom那样反映的 我有一些字符串,比如: result = '<tr ng-click="someFun()" rowid="hh_'+gameId+'" id="hh_'+gameId+'" ng-class="game.currVideoReplay[' + gameId + '] ? \'active-current-hand\':\'\'">' + uCHtml + cCHtml + pTHtml + dCV +'</tr>'; r

我编译了一个字符串,但它不是像dom那样反映的

我有一些字符串,比如:

result = '<tr ng-click="someFun()" rowid="hh_'+gameId+'" id="hh_'+gameId+'" ng-class="game.currVideoReplay[' + gameId + '] ? \'active-current-hand\':\'\'">' + uCHtml + cCHtml + pTHtml + dCV +'</tr>';

result = $compile(result)($scope);

angular.element(document.querySelector("tbody")).html(result);
result=''+uCHtml+cCHtml+pTHtml+dCV+'';
结果=$compile(result)($scope);
元素(document.querySelector(“tbody”)).html(结果);
但它在DOM上显示为:

[[object HTMLTableRowElement]]

问题是如何在DOM中显示实际数据。

TL;博士
$compile
返回一个元素,该元素必须按原样追加到DOM中。您不能只设置HTML

e、 g

Angular的编译器是如何工作的? 当您使用Angular的
$compile
服务编译标记时,它会解析HTML并将其转换为具有单个顶级元素的DOM片段。然后遍历所有元素及其属性,查看是否有任何需要应用的指令。将为相关元素对象编译和链接任何指令

这些指令可能使用jQuery或jQueryLite的
.data()
方法在元素上存储一些数据,也可能不存储。他们还可以添加一些事件处理程序或其他东西

如果然后尝试获取该DOM片段的HTML,那么所有jQuery数据和事件处理程序以及其他JS功能都将丢失。HTML本身是惰性的,它什么都不做。只有当附加了JS功能时,它才会达到您所期望的效果


所以不要把Angular看作是生成HTML。它真正产生的是一个充满数据和JS功能的DOM树,只能用元素对象来表示,而不仅仅是HTML。

您是否尝试过这个
$compile(result)($scope.HTML()??您应该在模板中定义html,并避免在无法@RameshRajendran它不起作用的代码中构建html,并且#devqon我不能这样做,因为我的字符串来自服务器。请在调用$compilean和try元素之前向我们展示console.log(result)返回的内容。find('tbody')。append(result);(您可以将元素注入指令中的链接函数,如果是控制器,则可以将$element注入
angular.element(document.querySelector("tbody")).append(result);