当前位置: 首页 > 知识库问答 >
问题:

vue-element-plus-admin框架用封装的form中的wangeditor设置readOnly不起作用的问题?

甘祺
2024-05-25
{    field: 'TemplateContent',    component: 'Editor',    componentProps: {      mode: 'simple',      height: '400px',      editorConfig: {        readOnly: true,        toolbarConfig: {          toolbarKeys: ['fontFamily', 'fontSize', 'color', 'sup', 'sub', 'lineHeight']        }      },      // @ts-ignore      onChange: (edit: IDomEditor) => {        setValues({          TemplateContent: edit.getHtml()        })      }    },    colProps: {      span: 24    }  }

这是用的这个框架封装的form,在表单中添加一个wangeditor编辑器,我默认设置的 readOnly: true,也就是默认编辑器不能编辑,但我之后要设置成能编辑,代码是下面的,现在不起作用,我现在试的是editorConfig里到第二层还是起作用的,但是第三层的属性就不行了。

setSchema([    { field: 'TemplateContent', path: `componentProps.editorConfig.readOnly`, value: false }  ])

下面是editor源码:

<script setup lang="ts">import { onBeforeUnmount, computed, PropType, unref, nextTick, ref, watch, shallowRef } from 'vue'import { Editor, Toolbar } from '@wangeditor/editor-for-vue'import { IDomEditor, IEditorConfig, i18nChangeLanguage, DomEditor } from '@wangeditor/editor'import { propTypes } from '@/utils/propTypes'import { isNumber } from '@/utils/is'import { ElMessage } from 'element-plus'import { useLocaleStore } from '@/store/modules/locale'const localeStore = useLocaleStore()const currentLocale = computed(() => localeStore.getCurrentLocale)i18nChangeLanguage(unref(currentLocale).lang)const props = defineProps({  editorId: propTypes.string.def('wangeEditor-1'),  height: propTypes.oneOfType([Number, String]).def('500px'),  editorConfig: {    type: Object as PropType<IEditorConfig>,    default: () => undefined  },  modelValue: propTypes.string.def('')})const emit = defineEmits(['change', 'update:modelValue'])// 编辑器实例,必须用 shallowRefconst editorRef = shallowRef<IDomEditor>()const valueHtml = ref('')watch(  () => props.modelValue,  (val: string) => {    if (val === unref(valueHtml)) return    valueHtml.value = val  },  {    immediate: true  })// 监听watch(  () => valueHtml.value,  (val: string) => {    emit('update:modelValue', val)  })const handleCreated = (editor: IDomEditor) => {  editorRef.value = editor}// 编辑器配置const editorConfig = computed((): IEditorConfig => {  return Object.assign(    {      customAlert: (s: string, t: string) => {        switch (t) {          case 'success':            ElMessage.success(s)            break          case 'info':            ElMessage.info(s)            break          case 'warning':            ElMessage.warning(s)            break          case 'error':            ElMessage.error(s)            break          default:            ElMessage.info(s)            break        }      },      autoFocus: false,      scroll: true,      uploadImgShowBase64: true    },    props.editorConfig || {}  )})const editorStyle = computed(() => {  return {    height: isNumber(props.height) ? `${props.height}px` : props.height  }})// 回调函数const handleChange = (editor: IDomEditor) => {  emit('change', editor)}// 组件销毁时,及时销毁编辑器onBeforeUnmount(() => {  const editor = unref(editorRef.value)  // 销毁,并移除 editor  editor?.destroy()})const getEditorRef = async (): Promise<IDomEditor> => {  await nextTick()  return unref(editorRef.value) as IDomEditor}defineExpose({  getEditorRef})</script><template>  <div class="border-1 border-solid border-[var(--el-border-color)] z-10">    <!-- 工具栏 -->    <Toolbar      :editor="editorRef"      :mode="editorConfig.mode"      :editorId="editorId"      :defaultConfig="editorConfig.toolbarConfig"      class="border-0 b-b-1 border-solid border-[var(--el-border-color)]"    />    <!-- 编辑器 -->    <Editor      v-model="valueHtml"      :editorId="editorId"      :defaultConfig="editorConfig"      :defaultContent="editorConfig.content"      :style="editorStyle"      @on-change="handleChange"      @on-created="handleCreated"    />  </div></template><style src="@wangeditor/editor/dist/css/style.css"></style>

共有1个答案

楚彦
2024-05-25

看你描述的信息里面推测,你是直接通过修改绑定的 wangEdit 的中的 readOnly 属性来实现的编辑器开启/关闭只读功能?我不是很确定 wangEdit 在初始化完成之后,会不会监听 editorConfig 的改变去重新设置相关的配置。所以你可以改用编辑器的API来切换只读功能? �� #enable -编辑器 API | wangEditor

当然也不排除你是因为数据响应丢失的问题,或者 watch 不是 deep 导致的。

 类似资料:
  • http://element-plus-admin-doc.cn/ 有用过上面的框架的吗?封装的Form表单,我在表单叫加个提交按钮怎么去判断需要必须的是否填了没?

  • 我有一个来自3的Vue项目。十、 我在

  • vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。

  • vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18n 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。 功能 登录/注销 权限验证 侧边栏 面包屑 富文本编辑器 Markdown编辑器 JSON编辑器 列表拖拽 plitPane

  • shangchao-admin-element-ui 上朝科技 - 后台管理系统 - Element-UI 框架 静态演示页面: http://yanxiaodi.coding.me/Element-admin/#/ 特别提醒(需要将静态测试的json数据输出到dist文件夹): yarn run dev 前, 请先使用 yarn run build 打包一下; 然后再使用 yarn run de

  • 在Vue的一些开源框架中,我发现很多有封装了axios,但是我有个疑问,如果不是封装的话,调用路径参数一般是这样的: 就是说get请求的https://api.spacexdata.com/v4/capsules/,附加了路径参数62615d180ec008379be596f1,是直接拼到后面的,而对于如vue-element-admin,他们的 封装是这样的: 我没有看到任何将params: {