组件封装使用,vue 实现json 编辑器

vue

依赖:

npm  install  vue-codemirror

可能遇到错误

npm  install file 

npm  install system 

子组件封装

components.vue 

<template>

<codemirror

class="code-dec"

ref="jsonEditor"

v-model="jsondata"

:options="options"

style="height: 600px;"

@input="changeCode"

/>

</template>

<script>

import { codemirror } from 'vue-codemirror'

import 'codemirror/lib/codemirror.css'

import 'codemirror/mode/javascript/javascript'

import 'codemirror/addon/selection/active-line'

import 'codemirror/keymap/sublime'

import 'codemirror/mode/css/css'

import 'codemirror/theme/monokai.css'

import 'codemirror/addon/lint/lint'

import 'codemirror/addon/lint/lint.css'

import 'codemirror/addon/lint/json-lint'

import 'codemirror/addon/display/autorefresh'

export default{

props:{

codedata:{

type:String,

required:true,

default:'{}'

}

},

components: {

codemirror

} ,

data () {

return {

jsondata:this.codedata,

options:{

tabSize: 4,

mode: 'application/json',

theme: 'base16-dark',

lineNumbers: true,

line: true,

lint: true, // 代码格式检查

gutters: ['CodeMirror-lint-markers', 'CodeMirror-foldgutter'],

}

}

},

methods: {

getCodeValue(){

let codedata = this.$refs.jsonEditor.codemirror

console.log(codedata)

},

changeCode(newdata){

this.jsondata=newdata

console.log(this.jsondata)

// 子传消息告诉父亲,执行方法和参数

this.$emit('changeparent',newdata);

}

},

}

</script>

<style lang="less" scoped>

* /deep/ .code-dec { touch-action: none; }

</style>

父组件中使用子组件:

<template>

<code-editor :codedata="data" @changeparent="changeValue"></code-editor>

</template>

<script>

import codeEditor from "@/components/codeEditor"

export default{

components: {

codeEditor

} ,

data () {

return {

data:'{"11":222}'

}

},

methods: {

changeValue(value){

this.codedata= value

console.log(`父组件值: ${this.codedata}`)

}

},

created () {

this.data =JSON.stringify({"a1":111111})

}

}

</script>

以上是 组件封装使用,vue 实现json 编辑器 的全部内容, 来源链接: utcz.com/z/376574.html

回到顶部