vue 问题总结

1、写debugger可以进行调试,不光vue项目能用,应该是chrome浏览器支持
2、vue在编写组件的时候,如果要是要引入多个组件,要在所有组件最外面加上一层div,也就是说,组件里面必选是个整体,如下
 
写法一
<template>
     <diy-component></diy-component>
</template>
 
写法二
<template>
     <div>
          <diy-component1></diy-component1>
          <diy-component2></diy-component2>
          ...
     </div>
</template>
 
3、获取dom元素的属性的方法,可以是设置ref, ref不能设置在组件上,会获取不到信息,要在组件外面加上一个div,给这个div设置ref
 
html
<template>
     <div ref="mycomponent">
          <diy-component></diy-component>
     </div>
</template>
 
script
export default{
     mounted(){
         console.log(this.$refs.mycomponent.offsetHeight)//输出这个组件所占的高度 
     }
}
 
4、向子组件传递数据
 
调用组件页面
transmitdata:对象类型
transmitstring:字符串类型
 
html
    <diy-component :transmitdata="obj" transmitstring="string"></diy-component>
script
     export default{
          data(){
              obj:{"name":"jack"} 
          }
     }
 
子组件
html
     <div>
          <span>{{transmitdata.name}}</span>
          <span>{{transmitstring}}</span>
     </div>
script
     export default{
         porps:['transmitdata','transmitstring'] 
     }
 
5、修改mint-ui组件默认样式
     style标签里,没有写scoped表示全局样式
 
举例修改.picker-center-highlight的样式,如下
<style>
     .picker-center-highlight{//有的时候优先级会比较低,需要在添加一些父级的类名,来提高优先级
         background:red; 
     }
     .h-group .picker-center-highlight{//提示优先级,也是做了限定,style标签里没有写scoped,表示是全局的样式,点要注意
          background:red;
     }
</style>
 
6、父组件调用子组件里面的方法
     需要在父组件中,给子组件的ref属性赋值,不能重复,相当于id,用于查找这个节点,通过$refs.childComponent,就可以找到子组件内部的函数
 
父组件代码
html
     <template>
          <div>
              <diy-child ref="childComponent"></diy-child> <!--给子组件的ref属性赋值-->
          </div>
     </template>
script
     export default{
          methods:{
              callChildfun:function(){//调用子组件的方法
                   this.$refs.childComponent.fun();//fun是子组件里的一个方法
               } 
          }
     }     
 
子组件代码
script
     export default{
          methods:{
               fun:function(){//被父组件调用的方法
                   console.log("被父组件调用"); 
               }
           }
     }
 
7、子组件向父组件传递数据
parentFun:子组件回调父组件的函数
childFun:子组件中触发回调的函数
transmitVariable:传递变量,在父子两个组件中进行传递
通过$emit函数完成回调的
 
编写步骤,1.先写父组件里的回调函数,2.编写子组件的调用函数,3.在父组件的html片段中进行绑定
父组件
html
     <template>
          <div>
               <diy-child v-on:transmitVariable="parentFun"></diy-child><!--使用v-on对transmitVariable进行绑定-->
          </div>
     </template>
script
     export default{
          methods:{
              parentFun:function(data){//回调函数
                    console.log(data);//子组件返回的数据
               } 
          }
     }
 
子组件
script    
     export default{
          methods:{
               childFun:function(callbackData){//触发回调函数
                    this.$emit('transmitVariable');//不传递参数
                    this.$emit('transmitVariable',callbackData);//传递参数,callbackData的类型:String,Array,Object...     
               }
          }
     }    
 
8、监听事件
     在向子组件传递数据的过程中,数据可能会发生变化,最开始的时候也有可能是为空的,这个时候子组件就可能获取不到数据
     编写步骤:1.初始化变量,2.监听变量,3.变量赋值操作,这三个步骤都要有,没有第三个会没有刷新数据的
 
html
     <template>
          <div>
               <diy-child :transmitData:"listdata"></diy-child><!--数据绑定-->
          </div>
     </template>
script
     export default{
          components:{diy-child},
          data(){
              return {
                   listdata:[] 
               } 
          },
          mounted(){
              this.listdata:[{"name":"jack"},{"name":"tom"}] //传递数据
          }
     }
 
子组件
html
     <template>
          <div>
               <div v-for="item in items">名称:{{item.name}}</div>
          </div>
     </template>
script
     export default {
          props:["listdata"],//获取数据
          data(){
              return {
                   items:[]; //初始化创建变量
               } 
          },
          watch:{//监听变量事件,当父级传递数据发生变化时,再执行一次init函数
              itmes(){
                   this.init(); 
               } 
          },
          mounted(){
              this.init(); //程序开始执行
          },
          methods:{
              init(){
                   this.items=this.listdata; //获取数据
               } 
          }
     }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue代理模式是一种处理跨域问题的有效方法。在Vue项目中,由于浏览器的同源策略限制,当前端项目和后端接口不在同一个域下时,会引发跨域问题。 为了解决Vue项目中的跨域问题,可以使用代理模式。代理模式的基本思路是在Vue的配置文件中配置一个代理,将前端的请求发送给代理服务器,再由代理服务器将请求转发给真正的后端接口。 在Vue项目根目录下的`vue.config.js`中,可以按照以下方式配置代理: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://backend-server.com', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` 以上配置表示将以`/api`开头的请求转发到`http://backend-server.com`后端服务器上。`changeOrigin`选项设置为`true`表示修改请求头中的`host`为目标URL的host,`pathRewrite`选项用于重写URL中的路径。 使用代理模式后,前端发送的请求会先经过代理服务器,然后再由代理服务器转发给后端接口,这样就解决了跨域问题。在开发环境中,可以将代理配置为开发服务器,而在生产环境中,可以将代理配置为真实的后端服务器。 总结来说,Vue代理模式可以通过在配置文件中设置代理服务器,将前端项目中的请求发送给代理服务器,再由代理服务器转发给后端接口,来解决跨域问题。通过这种方式,可以更方便地开发Vue项目并与后端接口进行通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值