Problem beim Aktualisieren des benutzerdefinierten Ueditor-Editors in Laravel-Admin
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-16 09:19:36
0
1
1506

Ich habe die Komponente im Laravel-Administrator definiert. Sie muss jedoch jedes Mal aktualisiert werden.
Wenn ich auf „Bearbeiten“ klicke, wird sie zum zweiten Bild

Ich möchte wissen, wie ich es ohne Aktualisierung direkt in das Bild in Kapitel 2 ändern kann. . . .

Die Komponente ist so geschrieben, siehe offizielle Dokumentation

<?php
namespace App\Admin\Extensions;

use Encore\Admin\Form\Field;

class UEditor extends Field
{
    protected $view = 'admin::form.editor';
    protected static $css = [

    ];

    protected static $js = [
       'vendor/ueditor/ueditor.config.js',
        'vendor/ueditor/ueditor.all.js',
    ];

    public function render()
    {
        $cs=csrf_token();
        $config=config('ueditor.route.name');
        $this->script = <<<EOT
          window.UEDITOR_CONFIG.serverUrl = '$config'
 var ue = UE.getEditor('{$this->id}');
    ue.ready(function() {
        ue.execCommand('serverparam', '_token', '$cs'); // 设置 CSRF token.
    });
  
EOT;
        return parent::render();

    }
}
女神的闺蜜爱上我
女神的闺蜜爱上我

Antworte allen(1)
phpcn_u1582

应该是用了vue吧,要把ueditor写成组件

<template>
  <p ref="editor"></p>
</template>

<script>

  import './ueditor.config';
  import './ueditor.all';
  import './lang/zh-cn/zh-cn';


  export default {
    data() {
      return {
        id: parseInt(Math.random()*1000)+'ueditorId',
      };
    },
    props: {
      value: {
        type: String,
        default: null,
      }
    },
    watch: {
      // value: function value(val, oldVal) {
      //   this.editor = UE.getEditor(this.id);
      //   if (val !== null) {
      //     this.editor.setContent(val);
      //   }
      // },
    },
    mounted() {

      var _this = this;
      this.$nextTick(function f1() {
        // 保证 this.$el 已经插入文档

        this.$refs.editor.id = this.id;
        this.editor = UE.getEditor(this.id, this.config);

        this.editor.ready(function f2() {
          this.editor.setContent(this.value==null?'<p></p>':this.value);
          this.editor.addListener("contentChange afterExecCommand", function () {
            const wordCount = _this.editor.getContentLength(true);
            const content = _this.editor.getContent();
            const plainTxt = _this.editor.getPlainTxt();
            _this.$emit('input', { wordCount: wordCount, content: content, plainTxt: plainTxt });
          }.bind(this));

          // this.$emit('ready', this.editor);
        }.bind(this));
      });
    },
  };
</script>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage