前提・実現したいこと
Laravelで使っているtoust ui editerにプラグインを追加する方法
発生している問題・エラーメッセージ
https://www.npmjs.com/package/@toast-ui/vue-editor
こちらのサイトを参考にtoust ui editer を使用できるようにしたのですがチャートなどのプラグインを追加がうまくいっていないです
該当のソースコード
vue
1<template> 2 <div class="container-fluid"> 3 <div class="row"> 4 <div class="col"> 5 <form v-on:submit.prevent="getHtml"> 6 <div class="form-group row m-0"> 7 <div class="col"> 8 <div> 9 <input 10 placeholder="Title" 11 type="text" 12 class="form-control" 13 id="title" 14 v-model="title" 15 /> 16 </div> 17 </div> 18 </div> 19 20 <div class="form-group row m-0"> 21 <div class="col"> 22 <div> 23 <vue-tags-input 24 v-model="tag" 25 :tags="tags" 26 @tags-changed="newTags => (tags = newTags)" 27 /> 28 </div> 29 </div> 30 </div> 31 32 <div class="form-group row m-0"> 33 <div class="col" v-if="show"> 34 <editor 35 class="editor" 36 :options="editorOptions" 37 :initialValue="text" 38 height="100vh" 39 ref="toastuiEditor" 40 :plugin="plugins" 41 /> 42 </div> 43 </div> 44 45 <div class="form-group row m-0"> 46 <div class="col"> 47 <button type="submit" class="btn btn-success w-100"> 48 投稿する 49 </button> 50 </div> 51 </div> 52 </form> 53 </div> 54 </div> 55 </div> 56</template> 57 58<script> 59import { Editor } from "@toast-ui/vue-editor"; 60import VueTagsInput from "@johmun/vue-tags-input"; 61import Chart from "@toast-ui/editor-plugin-chart"; 62 63export default { 64 name: "chat-component", 65 data: function() { 66 return { 67 editorText: this.text, 68 editorOptions: { 69 hideModeSwitch: true 70 }, 71 plugins: { 72 chart: Chart 73 }, 74 title: "", 75 tag: "", 76 tags: [], 77 text: "", 78 input: "", 79 show: true 80 }; 81 }, 82 components: { 83 editor: Editor 84 }, 85 methods: { 86 scroll() { 87 this.$refs.toastuiEditor.invoke("scrollTop", 10); 88 }, 89 moveTop() { 90 this.$refs.toastuiEditor.invoke("moveCursorToStart"); 91 }, 92 async getHtml() { 93 let html = this.$refs.toastuiEditor.invoke("getHtml"); 94 const url = "/ajax/post"; 95 const params = { 96 title: this.title, 97 tags: this.tags, 98 text: html 99 }; 100 await axios.post(url, params).then(response => { 101 // 成功したらメッセージをクリア 102 this.title = ""; 103 this.tags = []; 104 this.show = false; 105 }); 106 107 this.show = true; 108 //console.log(html); 109 }, 110 }, 111 mounted() {} 112}; 113</script> 114
試したこと
https://nhn.github.io/tui.editor/latest/tutorial-example15-editor-with-all-plugins
app.jsに上記のサイトのように記述してやろうとしたのですが
const editor = new Editor({ el: '#editor', height: '500px', initialEditType: 'markdown', previewStyle: 'vertical' }); Uncaught TypeError: Cannot create property 'innerHTML' on string
const editor = new Editor({ el: document.querySelector('#editor'), height: '500px', initialEditType: 'markdown', previewStyle: 'vertical' }); Uncaught TypeError: Cannot set property 'innerHTML' of undefined
このようにエラーが出ているのでコンポーネント内の要素に対してはこのようにできないと思い、該当ソースコードのようなやり方にしました。
もちろん
<div id="editor"></div>
は追加しましたが結果は変わらずでした。
補足情報(FW/ツールのバージョンなど)
Laravel 7.0.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。