javascript - Angularjs:使用 Angular Directive(指令)修改 Angular 表达式提供的内部html内容

标签 javascript html angularjs

我有一个简单的 Angular Directive(指令),如果相应的范围选项变量大于 1,则将字符串 'yes' 添加到元素的内部 html 内容。当内部 html 是 Angular 表达式时,原始文本将被保留,但无论范围选项变量值如何,都不会向其中添加"is"。我已经通过将代码包装在我的指令中来修复此问题,该指令修改了超时函数内的内部 html 文本,但是是否有一种不使用超时的正确方法来执行此操作?

代码示例:http://plnkr.co/edit/OhePRiHNJvNfKgNcrbnQ?p=preview

最佳答案

$timeout 在这里没问题。它实际做的是强制 HTML 在指令中的 Javascript 调用 .html() 之前先完成渲染。如果没有超时,HTML 渲染可能尚未在浏览器中完成。

在这里使用超时不是 hack - 您可以将时间设置为 0,它仍然有效。只要有 $timeout/setTimeout 就可以将其中的代码移动到浏览器事件队列的末尾 - 在 HTML 呈现工作完成之后,这就是您想要的。 Why is setTimeout(fn, 0) sometimes useful?有更多关于其工作原理和原因的详细信息。

关于javascript - Angularjs:使用 Angular Directive(指令)修改 Angular 表达式提供的内部html内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079204/

相关文章:

javascript - 没有结果的 Firebase 数据库

javascript - 无效的 CORS 请求

html - 如何在浏览器中编辑网页并将 html 保存到服务器

javascript - 在 Angular 中使用可见性 API?

javascript - 使用 jQuery 和 ajax 尝试写入锁定记录的最佳方法?

javascript - 将 javascript 日期设置为静态

javascript - 如何使用滚动函数获取的位置获取 HTML 中的元素标签

android - 在 Android 浏览器中压缩的背景图像

angularjs - 在模板中访问 $state

angularjs - "Same Domain"上的 Angular 选项 http 预检?