Vue.js中基础知识学习点

给样式背景赋值:

:style="{backgroundImage:'url(' + otherInfo.head_image + ')'}"

  

<img :src="'__ROOT__/upload/'+mesay.message"
v-if="message.type == 'text'" 

 2.监听器--watch的使用:

  

watch : {
   firstName: function(val){ //firstName是data里的v-model绑定的值
        this.fullName = val;
    }  
}

3. v-cloak的使用:

在style里 : [v-cloak]{diaplay:none;}

再在html标签 里增加v-cloak属性

4.注意它们区别:v-text,v-html,v-pre ,v-model.laze  

5.过滤器的使用

<body>
 <div id="app">
 	<div class="test">{{msg|upper|lower}}</div>
 </div>
</body>
<script type="">
	//全局过滤器,过滤器名。方法。对属性同样可用,只是没了大括号
	Vue.filter('upper',function(value,arg1){ //第二个参数开始可以传自己的参数
		return value.charAt(0).toLowerCase()+value.slice(1);
	});

	//局部过滤器
	var app = new Vue({
		el:'#app',
		data:{
			msg:''
		},
		filters: {	//局部过滤器.html里直接调用名称,可多个,后者在前者基础上接着过滤
			upper: function(v){
				return v.charAt(0).toLowerCase()+v.slice(1);
			}
		}
	})
</script>
</html>

  

  6.生命周期的三个阶段:挂载,更新,销毁。 销毁如何执行:调用this.$destory();其它方法都会被销毁。

7.修改响应式数据:直接vue修改与实例修改

  Vue.set(vm.list,1,'test'); //将data里的list里的1号位元素修改为test值。

  vm.$set(vm.list,1,'test');//实例方式修改

8.组件的命名,注册,使用,插棤,调试。

  组件注意:1.命名注意驼峰式的在模板字符串中可以使用,但在根组件里要转成-的形式使用。

       2. DATA返回必须返回函数.

       3. 组件外层用div包起来。

       4. 模板内容可以是模板字符串。

  组件分全局组件与局部组件:

    全局: Vue.component(组件名,{data:function(){},template:'字符串'});

    局部:data同级增加components:{'template-name':{data:function(){},template:字符串}} //第二个参数可以先声明变量,局部组件只能在父组件里使用。  

  组件通讯与传值:

    父传子:props.

        父组件里:<menu-list :title="title"></menu-list> //:title会传给子组件,写死的值就可以不要:

        子组件里:Vue.component('menu-list',{props:['title'],data:function(){},template:'.....' });//子组件可以直接调用 title;

    注意:字符串模板中,驼峰传值驼峰接收可以。但标签里只能横线传,可以驼峰接收。

    props属性:String,Number,Boolean,Array,Object.

    子传父:$emit;

        子组件里: <button @click='$emit("parent-attr")'>add</button>   //parent-attr要写到父组件的属性里。

        父组件里: <my-cmp @parent-attr='handle'></my-cmp>   //父组件的methods里写一个handle的方法可监测执行到。 

    同级相传: 自定义事件或叫事件总线. (建立事件通讯--监听与销毁--触发事件)

       

//1.在组件的mounted里监听.
var hub = new Vue();  //建立事件总线,实例化.

//以下为组件A
data:function()
{    return {
           num:0,
        }
 },
methods:{
    handel:function(){
         hub.$emit('jerry',1); //jerry为对方(兄弟)组件事件名,1为传过去的值.
    }
},
mounted:{ //这里监听 
      hub.$on('tom-event',(val)=>{  //val为接收传过来的值,tom-event对自身事件的命名
             this.num+= 1;  
    });
} ,
template:`<div>jerry{{num}},<button @click='handel'>点击</button></div>`   

  

    插槽:基本插槽,自命名插槽,作用域插槽.

        基本插槽:1.子组件模板中写个<slot>这里自定义内容,可写可不写</slot>,父组件里的此组件名里加入slot:<my-comp><slot>这是父组件传来的内容</slot></my-comp>;

        命名插槽:1.子组件模板中写个<slot name="header">这里自定义内容,可写可不写</slot>,父组件里的此组件名里加入slot:<my-comp><slot name="header">这是父组件传来的内容</slot></my-comp>;

        作用域插槽:场景如:父组件传个list到子组件,要求子组件里某个list高亮显示.

         

//父组件里增加属性
        <my-comp :psend="lists">

            <template slot-scope="slotPr">//需要自定义一个slot-slit-scope名字
                <strong v-if="slotPr.info.id==pdex" class="current">{{slotPr.info.name}}</strong>
                <span v-else>{{ slotPr.info.name}}</span>
            </template>
        </my-comp>

//子组件内容如下
            <ul>
                <li v-for="item in psend" :key="item.id">
                    <slot :info="item">{{ item.name}}</slot>//定义一个info传上去
                </li>
            </ul>

  

 

原文地址:https://www.cnblogs.com/bing2017/p/10741854.html