vue-property-decorator vue使用ts实战使用方式
vue-property-decorator 只是在vue项目使用ts的装饰器而已<template><div class="login"></div></template><script lang="ts">import { Component, Vue } from "vue-property-decorator...
·
vue-property-decorator 在vue中配合使用ts的装饰器
vue-property-decorator的介绍地址
<template>
<div class="login">
<input type="text" v-model="syncedName" />
</div>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";//导入装饰配置
import UpFile from "./UpFile.vue";
//导入其他vue文件
@Component({
components: { UpFile }
})
export default class Login extends Vue {
static ComponentName: string = "CModal";//组件名可作为子组件调用时用
// 变量定义
append: boolean = true;// 定义变量将不在data(){return:{}}中
//prop的使用
@Prop({
type: String,//这里注意首字母大写
default: "取消"//默认值
})
cancelBtnText!: string;//接收参数的变量
// props使用方式不在用以下原来的方式
// props:{
// cancelBtnText:{
// type:String,default:"取消"
// },
// name:String
// }
//函数将不用写在method:{}中,直接写在下面
login(formName: any) {}
// watch的使用
@Watch("id", { immediate: true, deep: true })//id为被监听对象
function (new: any,old: any){
}
// 使用PropSync做双向绑定
@PropSync('name', { type: String }) syncedName!: string//computed使用方式
//computed: {
// syncedName: {
// get() {
// return this.name
// },
// set(value) {
// this.$emit('input', v)
// }
// }
//}
使用Model做双向绑定
@Model("input", { type: String })
value!: String;
get syncedName(): String {
return this.value;
}
set syncedName(b: String) {
this.$emit("input", b);
}
//model: {
// prop: 'checked',
// event: 'change'
// },
@Emit()
addToCount(n: number) {
this.count += n
}
//addToCount(n) {
// this.count += n
// this.$emit('add-to-count', n)
// },
//生命周期函数使用方式不变
mounted() {
this.loginCode();
}
}
</script>
<style lang="less" scoped>
}
</style>
更多推荐
已为社区贡献6条内容
所有评论(0)