javascript - AngularJS 在 insideHTML 编辑上中断

标签 javascript html angularjs dom

我刚刚在摆弄时遇到了一个非常好奇的问题。

我创建了一个日志记录函数,它将文本附加到 document.body.innerHTML 中,如下所示。

function log(text)
{
   document.body.innerHTML += text + '<br>';
}

如果我现在从我的 Controller 范围调用这个函数,它会破坏 AngularJS。

有人可以解释一下这种行为吗?

<小时/>

Demo - 多次点击栏,它们就会开火。单击 foo 一次,所有单击事件都不再起作用

最佳答案

因为您正在设置 innerHTML ,您正在有效地重新创建整个<body>元素。 Controller 和指令链接到的元素将被破坏,您的应用程序将中断(任何普通 JavaScript 事件处理程序也会中断)。

document.body.innerHTML +=在任何情况下都是一个坏主意,尤其是在使用 Angular 时。

如果您需要这样做,并且无法通过标准 Angular 绑定(bind)等来做到这一点,更好的选择是 angular.element(body).append()

关于javascript - AngularJS 在 insideHTML 编辑上中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36497066/

相关文章:

javascript - Bootstrap Typeahead 转义?

angularjs - Ionic/Angular JS - 使用 ngCordova 相机插件选择图片后显示图片

angularjs - 如何使用 Python 创建 REST API(保存和加载数据)并使用 AngularJS 使用它?

javascript - 禁用 RGraph 属性的渲染

javascript - 导入 Json 数据并在 Angular 应用程序中显示

javascript - HTML 选择 : Eliminating browser Delay on keypress-to-change?

html - 如何修复未显示的背景图片

javascript - 无法根据文档在 Angular ui-router 中访问 $state.current.data

javascript - 指令在删除后获取其他指令的数据

html - 单引号在 Doctype 中有效吗?