Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS ng bind html似乎没有更新DOM_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript AngularJS ng bind html似乎没有更新DOM

Javascript AngularJS ng bind html似乎没有更新DOM,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,这是正在发生的事情的一个基本例子。HTML绑定实际上工作得很好。我甚至可以提醒$scope.testDocument并获取最新更新的内容。但是,如果我尝试选择任何使用指令绑定的新插入HTML元素,它总是返回0长度。与jQuery所需的DOM是否存在某种关系 HTML代码片段 <form> <button id="myButton" type="button" ng-click="testUpdate()">Test Update</button> &l

这是正在发生的事情的一个基本例子。HTML绑定实际上工作得很好。我甚至可以提醒$scope.testDocument并获取最新更新的内容。但是,如果我尝试选择任何使用指令绑定的新插入HTML元素,它总是返回0长度。与jQuery所需的DOM是否存在某种关系

HTML代码片段

<form>
    <button id="myButton" type="button" ng-click="testUpdate()">Test Update</button>
</form>

<div ng-bind-html="testDocument" id="testDocument"></div>
$scope.testDocument = $sce.trustAsHtml("<div>My HTML.</div>");
$scope.testUpdate = function() {
    $scope.testDocument = $sce.trustAsHtml("<div><span class='test-new-element'>My HTML.</span></div>");
    alert($(".test-new-element").length);
}

我在$rootScope.Scope上读到的关于这个主题的文档可以在$watch函数中找到。

您需要等待角度摘要循环完成,直到它完成,DOM才被更新。最简单的解决方案(尽管有点黑)是将其包装在
$timeout
中:

$timeout(function() { alert($(".test-new-element").length); });

IME如果您正确使用数据绑定,您几乎不需要使用jQuery来选择元素。与示例不同,HTML的内容实际上非常大。我正在选择/高亮显示文本,但一些高亮显示的文本已超过DIV的可视区域,因此我需要将DIV向下滚动到高亮显示元素的位置。这是jQuery的核心功能。谢谢@dave,就是这样。你能告诉我是否有一个摘要侦听器,我可以附加回调,这样我就不需要超时吗?我似乎找不到与《文摘》周期有多大关系。我在回答上述评论的问题中添加了一些细节。
$timeout(function() { alert($(".test-new-element").length); });