[TOC]
一个vue组件代码写法
<template>
<div class="cs-main-home"></div>
</template>
<script>
import wpsPreview from "@/mixins/wps.js";
export default {
name: "Home",
};
</script>
<style lang="less" scoped>
.cs-main-home {}
/deep/.ivu-tabs-bar { margin-bottom: 5px; }
</style>
1. script部分写法
<script>
import QueryConditions from './query-coditions';
export default {
// 组件名字:只有作为组件选项时起作用。允许组件模板递归地调用自身。注意,组件在全局用 Vue.component() 注册时,全局 ID 自动作为组件的 name。
// 指定 name 选项的另一个好处是便于调试。有名字的组件有更友好的警告信息。另外,当在有 vue-devtools,未命名组件将显示成 <AnonymousComponent>,这很没有语义。通过提供 name 选项,可以获得更有语义信息的组件树。
name: 'Home',
// 引入组件:值必须是对象,
components: {
QueryConditions
},
// 自定义组件的 v-model, 覆盖默认value属性和input事件
model: {
prop: 'fatherData', // 指定v-model属性接受数值,需要在props里面声明
event: 'changeData'// 指定事件回送数据给父组件
},
// props 属性
props: {
fatherData: '',
fileName: {
type: String,
required: true
},
},
// 组件自己的属性定义处
data() {
return { a: 10 };
},
// 组件生命周期
created() { },
mounted() { },
// 计算属性:
// 当 a 属性 发生变化时,需要 aDouble 也发生变化时,使用 computed,
// 1,computed中声明的属性,不需要在 data方法中声明了。
// 2. 不能使用箭头函数,应为箭头函数没有this,获取不到data()中数据
computed: {
// 仅读取
aDouble: function () {
return this.a * 2
},
// 仅读取,另一种写法
isTen() {
let flag = false;
if (this.a === 10) {
flag = true;
}
return flag;
}
// 读取和设置
aPlus: {
get: function () {
return this.a + 1
},
set: function (v) {
this.a = v - 1
}
}
},
// 侦听器: 在数据变化时执行异步或开销较大的操作
// 在 a 变量发生改变时,会执行watch中对应 a 方法
// 一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。
// Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。
watch: {
// 如果 `a` 发生改变,这个函数就会运行
a: function (val, oldVal) {
console.log('new: %s, old: %s', val, oldVal)
},
},
// methods 将被混入到 Vue 实例中。可以直接通过 VM 实例访问这些方法,或者在指令表达式中使用。方法中的 this 自动绑定为 Vue 实例。
methods: {
plus: function () { this.a++ },
getData() {}
},
};
</script>