小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文来学习 Vue 组件化
Vue 组件化前置学习
this.$children this.$refs this.$parent
1)$refs
首先你的给子组件做标记。demo:
显示div标签
然后在父组件中,通过this.$refs.one就可以访问了这个自组件了,包括访问自组件的data里面的数据,调用它的函数
组件的顺序问题: 是在调用时的顺序 即引用下标, 不是注册的顺序
如果没有 Vue.component 创建组件 children 组件 可以用[0]
即: Vue.component 创建的组件 game1 下标为[0]
Vue.component 创建的组件 game1 下标为[1]
Vue 实例对象里面的组件 children 的下标为[2]
Vue 组件化
组件化 写一个小游戏组件
- 创建一个组件,my-game: 猜数字大小
- 组件: 一个 input 和一个 p 构成
- 当组件准备挂载的时候,初始化一个随机数,
- 在 input 取输入的时候,
- 如果输入的数字小了, 在 p 显示: 输入的太小了;
- 如果输入的数字大了, 在 p 显示: 输入的太大了;
- 否则就提示输入正确
<script lang="javascript">
console.log('Vue Version ', Vue.version)
// 组件的创建
Vue.component('game1', {
data() {
return {
randomNum: 0,
myInput: '第一个组件',
result: '',
}
},
template: `
<div>
<input type='text' v-model.number='myInput'/>
<br>
<p>{{ result }}</p>
</div>
`,
beforeMount: function () {
// 创建一个10以内的随机数
var num = Math.floor(Math.random() * 10)
console.log('生产的随机数 ', num)
this.randomNum = num
console.log(this.myInput)
},
// 当输入的数据改变时执行的操作 判断 并给出提示
watch: {
myInput() {
if (this.myInput === this.randomNum) {
this.result = '恭喜: 猜对了'
} else if (this.myInput > this.randomNum) {
this.result = '啊哦! 猜大了'
} else {
this.result = '啊哦! 猜小了'
}
},
},
})
</script>