0

我有这个文本编辑器plunker 示例,问题是当我单击粗体按钮或任何其他按钮时,该按钮不显示可编辑 div 的状态,我知道如果我在 ng 中的按钮上添加一个类,则可以修复-mousedown 事件的功能,但如果我单击带有粗体文本的区域,该区域也应将类添加到正确的工具栏按钮,则无法解决问题,也许我应该使用类似观察者的东西,但要看什么?

更新

好的,我做了一些挖掘,我正在尝试观察插入符号的位置,以便我可以将正确的样式应用于我考虑过 $watchers 的文本编辑器的工具栏按钮,但我从未使用过它们。
我正在使用的示例来自此StackOverflow 帖子,帖子中有一个 Jsfiddle,但我使用 AngularJS 制作了一个plunker示例,展示了如何在 contenteditable div 中获取插入符号的位置。
有没有更好的方法,比如获取内部 contenteditable div 的 DOM 树,然后制作元素和位置的映射,然后使用数据绑定来控制工具栏中按钮的状态?
任何帮助,在此先感谢。

4

1 回答 1

1

我在这个SO 帖子中找到了答案:

浏览器不是手动完成所有这些操作,而是有一些方法可以告诉您当前选择或插入符号是粗体、斜体还是其他:( document.queryCommandState()MSDN )用于二进制命令,例如粗体和斜体,document.queryCommandValue()( MSDN ) 用于带有值,例如字体相关的命令。

于 2013-04-15T07:05:16.753 回答