当不写()时,有一个默认的参数,该参数是事件对象’Event’
当写()时,可以传递参数,如果需要事件对象时,则可传递一个‘$event’该参数就是事件对象,该参数不能随意命名
v-on:click.stop.prevent.self=“fun”
@click.stop.prevent.self
<!-- 把input的value值,输入到P标签 --> <div id="app"> <input type="text" name="" id="ipt"> <button id="but" @click="fun">Add</button><br> <p v-for="item in str" id="text">{{item}}</p> </div> <script src="../js/vue.js"></script> <script> new Vue({ el:'#app', data:{ str:[] }, // methods 是vue方法的集合 methods:{ fun(){ let app = document.querySelector('#app') app.style.borderColor = '#000' let value = document.querySelector('#ipt').value if(value !== ""){ this.str.push(value) } } } }) </script>v-bind 可以简写 那就是不写v-bind (如下实例)
.active { color: red; } <div id="app"> <button @click="fun">点击</button> <!-- 简写形式 --> <div :class="[box]">hello world</div> <!-- 常规形式 --> <!-- <div v-bing:class="[box]">hello world</div> --> </div> <script src="../js/vue.js"></script> <script> new Vue({ el: '#app', data: { box: '' }, methods: { fun() { this.box = 'active' } } }) </script>css
[v-cloak]{ display: none; }html
<div id="box"> {{str}} <ul v-cloak> <li v-for="item in arr">{{item}}</li> </ul> </div> <script src="../js/vue.js"></script> <script> new Vue ({ data:{ arr:['和平精英','穿越过线','QQ飞车','王者荣耀'], str:'你是个麻灰' } }).$mount('#box') </script>计算属性将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。
注意如果你为一个计算属性使用了箭头函数,则 this 不会指向这个组件的实例,不过你仍然可以将其实例作为函数的第一个参数来访问。
计算属性需要返回值 计算属性本身的函数会作为vue实例对象的一个属性 返回值会作为改属性的值因为是属性,所以计算属性的函数不能使用的时候调用计算属性的值只有在他依赖的数据发生变化的时候才会再次计算因此在一个数据需要多次使用并且值是一样的时候强烈建议使用计算属性 因为可以提高代码执行效率 <div id="app"> 时间:{{changeTime}} <button @mouseover="fun">你过来啊</button> </div> <script src="../js/vue.js"></script> <script> var vm = new Vue({ el: '#app', data: { createTime:'2000-04-15 12:50:13', }, methods: { fun(){ this.createTime = new Data() } }, computed:{ changeTime() { let data = new Data(this.createTime) let year = data.getFullYear() let month = data.getMonth() let day = data.getData() month = month > 9 ? month :'0' + month return `${year}-${month}-${day}` } }, }); </script>一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。
监听vue中的数据和状态发生的变化 <div id="app"> <button @click="fun">点击看变化</button> </div> <script src="../js/vue.js"></script> <script> // watch 监听vue的数据变化 var vm = new Vue({ el: '#app', data: { value:'11111111', str:"被这风吹散的人,说他爱的不深", obj:{ name:"毛巨星", age:26, }, arr:['来根华子','街溜子'], arr_f:[{name:'仔仔'}] }, methods: { fun(){ this.value = '555555555555' this.str = '被这雨淋湿的人,说他不会冷' this.obj.name = "毛不易" this.obj.age = 56 // 数组发生的变化是可以直接监听的 但是数组项发生的变化监听不到 // this.arr[0] = "奥利给" this.arr.push('奥利给') this.arr_f[0]['typr'] = '老八秘制小汉堡' } }, watch:{ // // value 是要监听的数据 第一个参数是数据改变后的值 第二个参数是数据改变之前的值 // value(to,from){ // console.log(to + '·····我是新值') // console.log(from + '·····我是老值') // }, // str(to,from){ // console.log(to + '·····我是新值') // console.log(from + '·····我是老值') // }, // 监听对象中的某一个属性的值发生改变 // 'obj.name'(to,from){ // console.log(to + '·····我是新值') // console.log(from + '·····我是老值') // } // 错误示范 // obj(to,from){ // console.log(to + '·····我是新值') // console.log(from + '·····我是老值') // } // 深度监听 // 深度监听 他可以只要对象的某个值发生改变时监听到对象发生的变化 // obj:{ // deep:true, // handler(to,from){ // console.log(to) // console.log(from) // } // } // 错误示范 // arr:{ // deep:true, // handler(to,from){ // console.log(to,from) // } // } // arr(to,from){ // console.log(to,from) // } arr_f:{ deep:true, handler(to,from){ console.log(to,from) } } // 错误示范 // arr_f(to,from){ // console.log(to,from) // } } }); </script>