jquery项目引入vue和elementui遇到的坑

  1. 切记引入elementui的前提是引入vue

常见出错的情况:
一个简单的html页面或者一个非vue的项目,想要引入elementui的组件,然后引入elementui之后发现样式不起作用,很大一个原因就是没有引入vue

为方便此处CDN引入

 <!--引入 element-ui 的样式,-->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <!-- 必须先引入vue,  后使用element-ui -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
  <!-- 引入element 的组件库-->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>

引入vue之后发现还是不显示样式
原因:引入vue就得有挂载 所以vue的基本“样子”得有

此处简单举个el-button的例子

 <div id="app">
 		<el-button type="primary">主要按钮</el-button>
 </div>

<script>
	var app = new Vue({
	  el: '#app',
	  data: {
	    
	  }
	})
</scipt>
  1. form标签里边自己写的按钮点击后无法调用事件

是以下这么个情况

<form>
	 <input type="text" />
	 ..............不详细写了
	 <button @click="submit()">提交</button>
</form>

点击提交按钮发现submit()方法调用不了

网上百度了半天最终原因是:
一旦写了form标签,form会有本身的提交函数,自己写的提交就调用不了

解决方法:
把form自带的提交给他关了
可以单独在<script></script>中写个函数
也可简单一点直接写在form标签里

<form onsubmit="return false;">
.....
</form>
  1. vue的methods中函数调用不了

实际场景是这样:

//代码如下
<div id="app">	
		......
 		<el-button type="primary" @click=“method2()”>主要按钮</el-button>
 </div>

<script>
	var app = new Vue({
	  el: '#app',
	  data: {
	   
	  },
	  mounted(){
	  	this.method1() 
	  },
	  methods: {
			method1(){
				axios...发了一个请求 记得如果要用axios记得引入axios
			},//不详细写具体的方法了
			method2(){
				axios...发了一个请求 记得如果要用axios记得引入axios
			}
		}
	})
</scipt>


//实际情况
method2()的axios请求一直发不出去 但是method1() 就可以
说明后端接口没问题【这是当时在排错】

原因:????欢迎大家评论区指点
大概就是this的指向这些问题吧
解决方法:

//在created里边加两行
<script>
	var app = new Vue({
	  el: '#app',
	  data: {
	   
	  },
	  created(){
         var that = this
         window.method1 = that.method1
      },
	  mounted(){
	  	this.method1() 
	  },
	  methods: {
			method1(){
				axios...发了一个请求 记得如果要用axios记得引入axios
			},//不详细写具体的方法了
			method2(){
				axios...发了一个请求 记得如果要用axios记得引入axios
			}
		}
	})
</scipt>
  1. 类似3的问题 从后端请求回来的数据赋值给this.变量 页面无法渲染请求回来的数据

实际情况

//我们想要的效果是页面渲染出我们从后端请求回来的数据,但是实际上并没有
//代码如下
<div id="app">	
		{{message}}
 </div>

<script>
	var app = new Vue({
	  el: '#app',
	  data() {
         return{
              	message:""
           }
      },
      //或者这样写也行 这不影响
      data: {
		message:""
	  }
	  mounted(){
	  	this.method1() 
	  },
	  methods: {
		method1(){
			axios.get(url.then(res => {
              this.message = res.data
            })
		}
	})
</scipt>

解决方法:

methods: {
	method1(){
		var self = this //此处this是全局
		axios.get(url.then(res => {
        	self.message = res.data //此处我们定义的self是局部
        })
 }

 

有些问题在之前用vue-cli搭建的前端项目中从来没有遇到过的,以上是基于在html文件中CDN引入vue时候遇到的问题

博客内容写的不够严谨和不够清晰的地方欢迎大家指正交流。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值