Summernote 编辑器落后于 Summernote 工具栏

Posted

技术标签:

【中文标题】Summernote 编辑器落后于 Summernote 工具栏【英文标题】:Summernote editor gets behind the summernote toolbar 【发布时间】:2018-09-04 17:08:00 【问题描述】:

我正在使用带有 angularJS 的 Summernote。我写了一个包装器来使它工作。在我的 html 中,我正在尝试使用带有 bootstrap 崩溃的 Summernote。当我切换面板时,summernote 编辑器位于summernote 工具栏的后面。当我稍微调整窗口大小时,它会得到修复。不知道是什么问题。

This how it shows up in the console

这是 js 包装器

   @Component(
selector: 'summernote',
templateUrl: './summernote.html')
  export class SummernoteComponent implements AfterViewInit, OnDestroy 
@ViewChild('input') input: ElementRef;

@Input() placeHolderText: string = "";
@Input() selectedText = null;

@Output() changeText = new EventEmitter<any>();
value: string;

constructor(private zone: NgZone)  

ngAfterViewInit() 
    var config = this.buildConfigObject();
    if (typeof window !== 'undefined') 
        let _self = this;
        this.zone.runOutsideAngular(() => 
            $(_self.input.nativeElement).summernote(config);
            $(_self.input.nativeElement).on("summernote.change", function (value, contents, $editable) 
                // _self.value = contents;
                _self.value = contents.split("<p><br></p>").join("");
                _self.changeText.emit(_self.value);
            )

            if (_self.selectedText) 
                $(_self.input.nativeElement).summernote('pasteHTML', _self.selectedText);
            

        );
        $(_self.input.nativeElement).summernote('disable');
        $(_self.input.nativeElement).summernote('enable');

    


ngOnDestroy() 
    //$(this.input.nativeElement).timepicker('destroy');


buildConfigObject() 
    var config = 
        callbacks: 
            onChange: function (contents, $editable) 
            
        ,
        placeholder: this.placeHolderText,
        // airMode: true,
        minHeight: null,             // set minimum height of editor
        maxHeight: null,             // set maximum height of editor
        focus: true,
          popover: 
    
    return config;

这是html

        <div class="card card-default">

            <div class="tools">
                <a class="collapse" href="javascript:;"></a>
                <a class="config" data-toggle="modal" href="#grid-config"></a>
                <a class="reload" href="javascript:;"></a>
                <a class="remove" href="javascript:;"></a>
            </div>

            <div class="card-block no-scroll card-toolbar" style="padding:0px;">
                <div class="summernote-wrapper">
                    <div id="summernote" #input></div>
                </div>
            </div>
        </div>

【问题讨论】:

【参考方案1】:

您应该在显示后构建编辑器。


Summernote 将寻找元素的高度和宽度来构建。 如果你在不可见模式下初始化它,就会出错。

// show is before animation and shown is after it.
// if you use tab, there is also a event: shown.bs.tab
$('#collapse').on('shown.bs.collapse', function() 
  $('#summernote').summernote(config);
)

【讨论】:

以上是关于Summernote 编辑器落后于 Summernote 工具栏的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5 中链接 Css 和 Js 文件 Summernote 资产的正确方法

设置summernote默认为斜体

Summernote 编辑器未打开(laravel 5.2)

summernote 表添加行

基于jquery的bootstrap在线文本编辑器插件Summernote 简单强大

Summernote - 从服务器中删除图像