使用 vuejs 的 trumbowyg 编辑器

trumbowyg editor with vuejs

我正在使用trumbowyg editor control in my vuejs spa. From the documentation我知道我可以使用下面的代码来设置编辑器的内容

$('#editor').trumbowyg('html','<p>Your content here</p>'); 
$('#editor').trigger('tbwchange');

但是,它在我的 VueJs 应用程序中对我不起作用。我有一个定义了描述键的对象。我可以 console.log 描述,但是当我尝试如上所述将其分配给编辑器控件时,它失败了。我在 console 中看不到任何错误,但文本不会显示在编辑器中。

这是我现在要做的事情。

<template>
    <div class="modal fade"  data-backdrop="static" data-keyboard="false">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">
                        <span v-if="anouncement">Edit Anouncement</span>
                        <span v-else>New Anouncement</span>
                    </h4>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        <input type="text" placeholder="enter anouncement summary here" class="form-control" v-model="anouncementObj.summary">
                    </div>
                    <div class="form-group">
                        <input type="text" placeholder="enter location here" class="form-control" v-model="anouncementObj.location">
                    </div>
                    <textarea class="note-view__body" id="anonDescription" v-model="description" placeholder="enter event description"></textarea>
                </div>
                <div class="modal-footer">
                    <button type="button" v-on:click="clear()" class="btn btn-link" data-dismiss="modal">Close</button>
                    <button type="button" v-on:click="performSave()" class="btn btn-link">Save</button>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        props : {
            anouncement : Object
        },
        data() {
            return {
                anouncementObj :{}
            }
        },
        mounted () {
            this.makeTextBoxReady();
            this.anouncementObj = Object.assign({},this.anouncementObj, this.anouncement || {});
                $('#anonDescription').trumbowyg('html',this.anouncement.description); 
                $('#anonDescription').trigger('tbwchange');
                console.log(this.anouncement.description);
        },
        methods : {
            makeTextBoxReady: function() {
                $(document).ready(function() {
                    if (!$('html').is('.ie9')) {
                        if ($('.note-view__body')[0]) {
                            $('.note-view__body').trumbowyg({
                                autogrow: true,
                                btns: [
                                    'btnGrp-semantic', ['formatting'],
                                    'btnGrp-justify',
                                    'btnGrp-lists', ['removeformat']
                                ]
                            });
                        }
                    }
                });
            },
            performSave : function() {
                let description = $('#anonDescription').trumbowyg('html');

                let formData = new FormData();
                for (name in this.anouncementObj) {
                    formData.append(name, this.anouncementObj[name]);
                }

                if( !this.anouncementObj.id) {
                    this.anouncementObj.id = 0;
                }

                formData.append('description',description);

                this.$http.post('/admin/anouncement/createOrUpdate', formData).then(response => {
                    // console.log(response);
                    if(response.data.status==200) {
                        alert(response.data.message);
                        this.$emit('getAnouncements');
                    }
                })
            },
            clear: function() {
                this.anouncementObj= {};
            }

        }
    }
</script>

你能告诉我我做错了什么吗?我也尝试过 nexttick 方法,但即使这样也行不通。

我成功了。我没有使用正确的 bootstrap 模态 ID。请参阅此 了解更多信息。

这是正确的代码。

if(this.anouncementObj && this.anouncementObj.description && this.anouncementObj.id) {
   $('#'+this.anouncementObj.id+' #anonDescription').trumbowyg('html',this.anouncementObj.description); 
   $('#'+this.anouncementObj.id+' #anonDescription').trigger('tbwchange');
}