如何使用AngularJs动态添加html内容

如何使用AngularJs动态添加html内容,angularjs,Angularjs,我想使用angularJs动态添加HTML内容,但出现以下错误: "$compile is not defined" 原因可能是什么 代码 角度.module('elnApp') .controller('ProgramtableCtrl',函数($scope,$location,$filter,ngTableParams, 可编程表服务){ for(var i=0;i如果您只想添加html内容ng bindHtmlUnsafe就可以了 在HTML中 <div class="circl

我想使用
angularJs
动态添加HTML内容,但出现以下错误:

"$compile is not defined"
原因可能是什么

代码


角度.module('elnApp')
.controller('ProgramtableCtrl',函数($scope,$location,$filter,ngTableParams,
可编程表服务){

for(var i=0;i如果您只想添加html内容
ng bindHtmlUnsafe
就可以了

在HTML中

<div class="circle_dynamic" ng-bindHtmlUnsafe={{expression}}></div>

内部控制器

$scope.expression="<i ng-class='circle_class' style='position: absolute;'></i>"
$scope.expression=“”

请参阅angularjs中的文档,作为最佳实践,您应该使用DOM操作指令


为什么需要编译它?

这里不需要调用
$compile

注意:我认为硬编码索引
$scope.users[0].projects.length
在逻辑上不正确,您确定要这样做吗

您的代码中的这些行非常混乱。如果您告诉用户的数据结构是什么(即用户、项目和结果之间的关系)以及您想要实现什么,您将更容易得到答案

for(var i=0; i<=$scope.users[0].projects.length; i++){
    for(var j=0; j<$scope.users[0].projects[i].results.length; j++){
发生“$compile未定义”,因为您忘记将其注入控制器


使用$compile动态添加HTML内容是可以的。但不要在控制器中执行。在指令中执行。

这段代码在哪里?在指令中?在控制器中?向我们展示如何初始化它。这在控制器中。为什么需要调用$compile?即使这样做,也应该在指令中执行,而不是在控制器中。我打赌你有很强的jQ您的背景如何?我建议您阅读官方教程和文档,因为您所做的是违反Angular的约定的-这将使您的开发变得困难和令人沮丧。好的,谢谢您的建议,您不应该尝试在控制器中修改DOM。什么是I,j?令人困惑的是您正在迭代用户并显示仅第一个用户的项目结果。如果确实需要,请定义类似于
var projectOwner=$scope.users[0]
的内容,并使用它以使其清晰。如果每个用户的每个项目的结果为一(非零),则此代码将显示每个结果的图标。如果结果为0,则不显示图标。
for(var i=0; i<=$scope.users[0].projects.length; i++){
    for(var j=0; j<$scope.users[0].projects[i].results.length; j++){
<td ng-repeat="user in users[0].yds"
    data-title="'Timeline'"
    sortable="timeline"
    style="text-align: center" >
  <div ng-repeat="project in user.projects">
    <div ng-repeat="result in project.results"
         ng-show="result">
      <i ng-class='circle_class' style='position: absolute;'></i>
      </div>
  </div>
</td>