ng-quill 文本编辑器只更新一次
ng-quill text editor only updates once
我有一个 angular 应用程序,我正在使用 ngQuill
基本指令是通过将其注入您的应用程序并使用 HTML:
中的标签来实现的
<ng-quill-editor class="" ng-model="document.doc" toolbar="true" link-tooltip="true" image-tooltip="true" toolbar-entries="font size bold list bullet italic underline strike align color background link image" editor-required="true" required="" error-class="input-error"></ng-quill-editor>
在我的应用程序中,我有一个模式允许用户 select 从 select
加载文档。第一次一切都很好。但是,如果我尝试加载不同的文档,ngQuill 会拒绝更新。数据被推送到其他绑定,但不是 ngQuill。我做了一个测试,看看绑定到 ngQuill 的绑定是否真的在获取数据,它是,但 ngQuill 永远不会更新。
我想也许它只需要一个 $digest,但我尝试了 $timeout 和 $apply,但什么也没有。这几乎就像它失去了绑定。有什么建议么?
如果您查看 this plunker,您可以看到问题所在。单击一个按钮,然后单击另一个 - 第一个按钮将正确加载,但之后只有标题发生变化。
该文档还有以下内容,但我不确定它是否相关或如何使用它:
if you use it in a form and you are resetting it via $setPristine() -> you have to set editor.setHTML('') -> it will add the error class only, if the model has ng-dirty class
为了使双向绑定始终如一地工作,我必须在 ng-quill.js 文件的指令的 link
中添加一个 $watch 函数。
基本上它所做的就是观察我是否更改附加到视图中指令的 ng-model 绑定,然后将其与编辑器当前存储在指令中的内容进行比较。如果两者不相等,则用外部文件替换内部文件。
我还添加了一个条件,如果我将外部 ng-model 绑定设置为未定义,它也会清除 ng-quill 文档。
函数如下:
$scope.$watch(function () {
return ngModel.$viewValue;
},
function (newText) {
if (newText && newText !== editor.getHTML()) {
editor.setHTML(newText);
}
if (newText === undefined) {
editor.setHTML('');
}
}
);
我有一个 angular 应用程序,我正在使用 ngQuill
基本指令是通过将其注入您的应用程序并使用 HTML:
中的标签来实现的<ng-quill-editor class="" ng-model="document.doc" toolbar="true" link-tooltip="true" image-tooltip="true" toolbar-entries="font size bold list bullet italic underline strike align color background link image" editor-required="true" required="" error-class="input-error"></ng-quill-editor>
在我的应用程序中,我有一个模式允许用户 select 从 select
加载文档。第一次一切都很好。但是,如果我尝试加载不同的文档,ngQuill 会拒绝更新。数据被推送到其他绑定,但不是 ngQuill。我做了一个测试,看看绑定到 ngQuill 的绑定是否真的在获取数据,它是,但 ngQuill 永远不会更新。
我想也许它只需要一个 $digest,但我尝试了 $timeout 和 $apply,但什么也没有。这几乎就像它失去了绑定。有什么建议么?
如果您查看 this plunker,您可以看到问题所在。单击一个按钮,然后单击另一个 - 第一个按钮将正确加载,但之后只有标题发生变化。
该文档还有以下内容,但我不确定它是否相关或如何使用它:
if you use it in a form and you are resetting it via $setPristine() -> you have to set editor.setHTML('') -> it will add the error class only, if the model has ng-dirty class
为了使双向绑定始终如一地工作,我必须在 ng-quill.js 文件的指令的 link
中添加一个 $watch 函数。
基本上它所做的就是观察我是否更改附加到视图中指令的 ng-model 绑定,然后将其与编辑器当前存储在指令中的内容进行比较。如果两者不相等,则用外部文件替换内部文件。
我还添加了一个条件,如果我将外部 ng-model 绑定设置为未定义,它也会清除 ng-quill 文档。
函数如下:
$scope.$watch(function () {
return ngModel.$viewValue;
},
function (newText) {
if (newText && newText !== editor.getHTML()) {
editor.setHTML(newText);
}
if (newText === undefined) {
editor.setHTML('');
}
}
);