如何获取使用 Angular js 绑定的 div 的内容?

Posted

技术标签:

【中文标题】如何获取使用 Angular js 绑定的 div 的内容?【英文标题】:How to get the content of a div that uses Angular js binding? 【发布时间】:2015-02-07 23:41:35 【问题描述】:

我想获取包含角度范围绑定数据的 div 的内容。

<div id='someDiv'> <h1> someText </h1> </div>

在控制器中的什么位置,

$scope.someText = 'Hello World';

innerhtml 属性不起作用。 document.getElementById('someDiv').innerHtml 不起作用,因为它返回未绑定的变量

var content = document.getElementById('someDiv').innerHtml; 控制台日志(内容);

记录&lt;h1&gt; someText &lt;/h1&gt;的结果

我希望它在变量绑定到它的值后返回 div 内容,就像'&lt;h1&gt; Hello World! &lt;/h1&gt;'

如何做到这一点?

【问题讨论】:

您可能试图在 Angular 有机会处理它之前过早地获取该值。 innerHtml 应该是 innerHTML 并尝试在超时中包装它。 setTimeout(function() console.log(document.getElementById('someDiv').innerHtml); );jsbin.com/lodazaxose/4/edit 您可能需要等到 Angular 的摘要周期结束。仅在 setTimeout() 上执行此操作可能还不够。 @PSL,谢谢,您的评论和小提琴说明了根本问题。 【参考方案1】:

您将希望在 Angular 中使用 $timeout 服务。最好创建一个指令来提取 HTML,因为在 angular 之外无法确定何时完成摘要循环。

以下是此类指令的示例:

module.directive('getRenderedHtml', function($timeout) 
    return 
        controller: function ($scope) 
            return ;
        ,
        requires: 'getRenderedHtml',
        link: function(scope, element, attrs, thisController) 
            var rawHtmlContainer = angular.element('<div></div>');
            $timeout(function() 
                thisController.html = element[0].innerHTML;
            );
        
    
);

http://jsfiddle.net/rnpn8rj0/

【讨论】:

谢谢,指令示例很棒。您将如何修改指令以通过控制器内的变量访问呈现的 html? 该答案取决于您计划在何处/如何使用 HTML。将数据存储在控制器中似乎不正确。如果您需要应用程序中多个不同位置的数据,将数据存储在服务中会更有意义。或者,您可以将数据存储在指令的控制器中,尽管只有子指令可以使用它,但它也可以直接在 HTML 中使用。

以上是关于如何获取使用 Angular js 绑定的 div 的内容?的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular JS 中检索 Iframe 内的数据绑定值

如何检测 angular.js 中的 keydown 或 keypress 事件?

Angular:如何将异步属性数据绑定到背景图像

如何利用Vue.js库绑定HTML标签内的class属性值

js 如何获取class的元素

Angular 2 - NgFor 中与 NgModel 的 2 路绑定