1. やりたいこと
Quillのカスタムモジュールを作成するために、
まずは、確認のために簡単なモジュールで確認をしています。
具体的には、リッチエディタに記述された文字数を出力するだけの
シンプルなVueコンポーネントを作りました。
2. わからないこと
Quillのカスタムモジュールを機能を利用して
任意のイベントハンドラーを登録できるのですが、
その中で Vueコンポーネントの data を更新する方法をご教示頂きたいです。
3. プログラム
以下が現在困っていることを再現したプログラムです。
コンストラクタ内部の
typescript
1this.textLength = text.length;
にて、Vueのクラス変数の textLength に値を設定したいのですが、
この処理では、設定されません。
以下に該当箇所のプログラム全体を添付します。
TypeScript
1<template> 2 <vue-editor v-model="content" :editorOptions="editorSettings"></vue-editor> 3 <div>{{ textLength }}</div> 4</template> 5 6<script lang="ts"> 7export default class ClassName extends Vue { 8 9 // vue-editor に記述されたテキストの文字数を格納 10 private textLength = 0; 11 12 // vue-editorの設定 13 get editorSettings(): any { 14 return { 15 modules: { 16 counter: true, 17 }, 18 }; 19 } 20 21 // コンストラクタ 22 constructor() { 23 super(); 24 Quill.register('modules/counter', (quill: any, options: any) => { 25 quill.on('text-change', () => { 26 const text = quill.getText(); 27 this.textLength = text.length; 28 }); 29 }); 30 } 31} 32</script>
4. 試したこと
this のスコープの問題かと思い、
typescript
1quill.on('text-change', () => {
の処理内部で
typescript
1console.log(this)
を実施しました。
すると、コンソールに表示されたのは Vueコンポーネントの情報でした。
(textLength の値は更新されていた)
なのにも関わらず、 Chrome拡張の Vue開発者ツールで data を確認すると
textLength の値は変化していませんでした。
(thisのスコープの問題ではなさそう)
5. 最後に
本件、大変困っております。
大変恐縮でございますが、
ご回答頂けますと大変うれしく思います。
何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。