当前位置: 首页 > 面试题库 >

在AngularJS中的Ajax调用后呈现动态HTML(angularjs内容)内容

冷越泽
2023-03-14
问题内容

我是刚接触Angular的人,在拨打Ajax电话后被卡住了。注入DOM后,如何呈现/编译html内容,以便仍可以使用AngularJs函数。

由于后端的设置方式,我必须通过ajax($ http)获取内容。我正在制作没有jQuery的应用。我尝试了$ compile和$
apply,但是没有用。我在这里想念什么。

我在http://jsfiddle.net/rexonms/RB7FQ/3/上设置了代码。我希望第二个div内容具有与第一个div相同的属性。

的HTML

<div ng-controller="MyCtrl" class="section">
  <input ng-model="contentA">
  <div>
      And the input is: {{contentA}}
  </div>
</div>

<div ng-controller="MyAjax" class="section">
  <div id="dumpAjax">
    {{ajaxData}}
  </div>
  <button ng-click=getajax()> Get Ajax</button>
</div>

脚本

var myApp = angular.module('myApp',[]);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {

}

function MyAjax($scope){
  var data = '<input ng-model="contentB">{{contentB}}';

  $scope.getajax = function(){
    $scope.ajaxData = data;
  }

}

提前致谢。


问题答案:

ng-bind-html-unsafe不可用 1.2及更高版本的角度

因此,您应该使用ng-bind-html来创建一个绑定,该绑定将使innerHTML以 安全的方式 将表达式评估为当前元素的结果。

$scope在您的字符串中使用变量使其不安全,因此您应该使用,$sce.trustAsHtml但是这次字符串中的变量无法绑定,因为它们不会被编译…

基本上,您应该 编译 字符串以绑定变量。自定义指令来了,您可以创建一个可以替换为 ng-html-bind 的指令…

编写一个扩展ng-bind-html了一些额外功能的自定义指令可以是一个解决方案

这是我的朋克

这是您使用我的解决方案更新的JSFIDDLE …



 类似资料:
  • 我正在重新编写这个问题,因为我认为原文不太清楚。 基本上,我有一个“wrapper”指令,在该指令中,我试图动态地将属性添加到一个已包装(转包)的元素中。我可以让它工作,但Angular似乎不知道一旦添加了新属性。 如果我使用,Angular确实可以识别它们——但代价是加倍编译转置的内容,在这种情况下,它会加倍标记中的

  • 问题内容: 我正在编写一个应用程序,它是Angular和jQuery的一部分。我通过在iFrame中加载jQuery内容来分离它们。 在某个事件(例如,单击ng)时,我需要刷新iFrame。我的控制器包含以下代码: 而iFrame是: 问题答案: 正如Paulo Scardine所说,正确的方法是通过指令,因为您不应该使用控制器来操纵DOM。 这样的事情可以做: 然后可以这样使用: 和:

  • 问题内容: 我本周刚开始使用AngularJS进行一个新项目,所以我必须尽快加快速度。 我的要求之一是动态添加html内容,并且该内容可能带有click事件。 因此,我在下面的代码Angular代码中显示了一个按钮,当单击该按钮时,它会动态添加另一个按钮。单击动态添加的按钮,应该添加另一个按钮,但是我无法让ng- click来处理动态添加的按钮 工作代码示例在此处 http://plnkr.co/

  • 这是我的模板: 这是我的视图模板: 我得到的内容是html,我想在视图中显示,但我得到的只是原始html代码。如何呈现HTML?

  • 问题内容: 在控制器中,我使用$ http或$ resource服务获取一些JSON数据。然后,我将此数据写入$ scope,AngularJS更新页面的HTML结构。我的问题是我需要知道用Angular 指令填充的列表(我的意思是HTML DOM元素)的新大小(宽度和高度)是多少。因此,我必须在Angular完成DOM结构更新后立即运行javascript代码。正确的做法是什么?我过去四个小时都

  • 我用jQuery将一些包含数学的内容加载到html文件中。现在我想让Mathjax排版这个新内容,但它不起作用。这就是我的JavaScript代码的样子 但它只加载内容,不应用MathJax。有什么建议说明它为什么不起作用吗? 编辑我添加了第二个按钮,带有第二次单击功能,运行以下脚本 如果我单击第一个按钮,它将加载新内容,而不应用MathJax。如果现在单击第二个按钮,它会将MathJax应用于新