请问下,要是在vue下使用,需要自己封装吗?
zhou-wjjw opened this issue · comments
Ahmad Wesson commented
主要做后端,对前端vue了解了一点,想在vue中使用,大佬能不能提供个思路我去试试
Zhonglu commented
是的,是需要wrap一下,我看了下Vue的文档,自己试了wrap一个控件,可以运行,你可以试试哈。
"dependencies": {
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"zeu": "^1.1.1"
},
TextMeter.vue
<template>
<canvas :id="id" :width="width" :height="height"></canvas>
</template>
<script>
import * as zeu from 'zeu';
export default {
name: 'TextMeter',
props: {
id: String,
width: Number,
height: Number,
options: Object,
displayValue: String,
value: Number
},
mounted() {
if (!this.chart) {
this.init();
}
},
watch: {
displayValue(val) {
this.chart.displayValue = val;
},
value(val) {
this.chart.value = val;
}
},
beforeDestroy() {
this.destory();
},
methods: {
init() {
let textMeter = new zeu.TextMeter(this.$el.id, this.options);
textMeter.displayValue = this.displayValue;
textMeter.value = this.value;
this.chart = textMeter;
},
destory() {
this.chart.destroy();
this.chart = null;
}
}
}
</script>
</script>
TestPage.vue
<template>
<div>
<button @click="update">Update</button>
<TextMeter :id="textMeter.id" :width="textMeter.width" :height="textMeter.height"
:displayValue="displayValue" :value="value" :options="textMeter.options"></TextMeter>
</div>
</template>
<script>
import TextMeter from './TextMeter';
export default {
name: 'TestPage',
components: {
TextMeter
},
data () {
return {
textMeter: {
id: 'test',
width: 200,
height: 100,
options: {}
},
displayValue: 'ZEU',
value: 80
}
},
methods: {
update() {
this.displayValue = 'NEW';
this.value = 30;
}
}
}
</script>
Ahmad Wesson commented
谢谢大佬,学到了,很不错