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

如何用jsf reRender或ajax加载替换html内容,并将新的DOM与AngularJS重新绑定?

长孙硕
2023-03-14
问题内容

考虑一下代码:

<div id="dest">
  <p>Original Content</p>
  <p>Some data</p>
  <ul>
    <li ng-repeat="i in items">{{i.name}}</li>
  </ul>
</div>

或者,使用jsf,一个面板:

<h:panelGroup id="dest">

Angularjs将理解ng-repeat指令,然后将

  • 标记替换为项目列表。
  • 但是,如果您的html已更改,通过ajax加载或通过jsf reRender进行了更改,AngularJS将无法识别新内容:

    $('#dest').load('replace.html');
    

    问题答案:

    我们需要为新的DOM编译并应用AngularJS范围:

    在控制器上,创建一个函数来编译新的html,并绑定到相同的作用域:

    $scope.compileDOM = function($el) {
        ($compile($el))($scope);
        $scope.$apply();
    };
    

    并且,在加载后,调用它:

    $('#dest').load('replace.html', function() {
        $dest.scope().compileDOM($dest);
    });
    

    查看功能 .scope() 。它允许为HTML元素找到正确的AngularJS范围。不需要直接使用ng-
    controller指向element,可以使用ng-controller下的任何元素

    柱塞样品:柱塞



     类似资料:
    • 问题内容: 我想在单击按钮时重新加载div。我不想重新加载整个页面。 这是我的代码: HTML: 单击按钮后,应该重新加载而不加载或刷新整个页面。 以下是我尝试过但无法正常工作的Jquery:- 请提出建议。 这是我页面上的DIV,其中包含一些产品的图片和序列号…这将是第一次加载时来自数据库的信息。但是,如果用户遇到问题,他将单击“再次捕获”按钮“ ”,这将再次加载这些信息。 Div的HTML代码

    • 问题内容: 在基于多个用户上下文渲染了整个页面并提出了几个请求之后,我希望用户能够切换上下文并再次重新渲染所有内容(重新发送所有请求等)。如果我只是将用户重定向到其他地方,则一切正常: 如果使用,那么正在等待响应的请求中的某些请求将被取消,因此无法使用。此外,黑客也不起作用(什么也没有发生)。 还有另一种方法可以重新渲染页面,而无需再次手动发出所有请求吗? 问题答案: 为了进行记录,要强制angu

    • 在基于多个用户上下文呈现整个页面并发出多个请求之后,我希望用户能够切换上下文并再次重新呈现所有内容(重新发送所有请求,等等)。如果我只是将用户重定向到其他地方,事情就会正常工作: 如果使用,则上等待响应的某些请求将被取消,因此我不能使用它。此外,黑客也不起作用(什么也不会发生)。 有没有另一种方法可以重新呈现页面,而不用再次手动发出所有请求?

    • 问题内容: 我正在使用Java进行项目,因此需要在单击特定按钮后重新加载整个程序。这该怎么做? 问题答案: 尝试 如果仍然无法使用,请在完成上述步骤后尝试

    • 问题内容: 我的意思是……让我们只是发出AJAX请求,然后将结果插入div#result中。 在后端脚本中,使用 ob_flush() 发送标头,但直到请求终止(使用 exit 或 ob_flush_end )后才终止请求 仅当请求终止( exit 或 ob_flush_end )时,内容才会加载到#result中,否则,每次脚本由 ob_flush 发送标头时,内容都会加载到 #result中

    • 问题内容: 我知道这是一个模糊的问题- 对此感到抱歉。如果我有一个在PHP和MySQL上运行的论坛,聊天室或类似的地方,用户可以在其中输入和提交数据,那么什么是最好的方式来使新提交的内容在提交后自动在页面上显示给所有用户? 如果您愿意,它很像实时新闻源…效果排序在这里适用于stackoverflow,当您回答问题时,系统会在您提交新答案时告知您。我想测试新提交的内容,然后自动显示它。 有什么建议?