vue实现公共方法抽离


Posted in Javascript onJuly 31, 2020

demo:制作一个点击按钮增加或者减少数字

现在vue组件内部测试一下功能

<template>
<div class="all">
<p>还未抽离</p>
<button @click="SubNum()">-</button>
<input type="number" v-model="number">
<button @click="AddNum()">+</button>
</div>
</template>

<script>
export default {
data() {
return {
number: 0
};
},
methods: {
SubNum() {
this.number--;
if (this.number <= 0) {
this.number = 0;
}
},
AddNum() {
this.number++;
if (this.number > 10) {
this.number = 10;
}
}
}
};
</script>

vue实现公共方法抽离

效果还可以,至少方法是对的,接下来进行方法抽离和传送参数

首先新建一个js文件 common.js

用es6的export default将方法导出

export default {
AddNum:function(){
console.log(1)
},
SubNum:function(){
console.log(2)
}
}

在main.js中用import将文件导入

import Common from './common'

声明全局common

Vue.prototype.common = Common

现在组件内只剩button和input,方法已经剪切出去

<template>
<div class="all">
<p>即将抽离</p>
<button @click="common.SubNum()">-</button>
<input type="number" v-model="number">
<button @click="common.AddNum()">+</button>
</div>
</template>

<script>
export default {
data() {
return {
number: 0
};
},
methods: {}
};
</script>

<style lang="scss" scoped type="text/css">
</style>

点击打印1或者2

vue实现公共方法抽离

证明方法是行得通的,现在将组件内的参数传送到方法里

传参通过钩子函数内传过去,因为要绑定点击事件,所以直接在methods定义一个方法

<template>
<div class="all">
<p>已经抽离</p>
<button @click="add(booleans)">-</button>
<input type="number" v-model="number">
<button @click="add(!booleans)">+</button>
</div>
</template>

<script>
export default {
data() {
return {
number: 0,
booleans: false
};
},
mounted() {},
methods: {
//判断点击的是加还是减
add(booleans) {
this.number = this.common.func(this.number,booleans);
}
}
};
</script>

<style lang="scss" scoped type="text/css">
</style>

这时公共方法已经简化,这样的话 在组件中看的比较简洁

export default {
func(num,booleans){
if(booleans){
num++
if(num>=10){
return 10
}
}else{
num--
if(num<=0){
return 0
}
}
return num
}
}

vue实现公共方法抽离

<--------文末------------>

有一个坑

<button @click="common.SubNum(number)">-</button>
<input type="number" v-model="number">
<button @click="common.AddNum(number)">+</button>
//

export default {
AddNum:function(num){
num++
if(num>=10){
return 10
}
console.log(num)
return num
},
SubNum:function(num){
num--
if(num<=0){
console.log(num)
return 0
}
return num
}
}

这个是刚开始抽离方法 直接在@click内传参

但是点击事件并没有将input的内容修改

我的理解是只是将参数传到方法里 但是方法改变参数时并未改变input绑定的this.number

不知道各位大神有什么见解或者建议,共同学习,希望能给大家一个参考,也希望大家多多支持三水点靠木!

Javascript 相关文章推荐
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
Feb 05 Javascript
jquery CSS选择器笔记
Mar 29 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
Aug 12 Javascript
对table和ul实现js分页示例分享
Feb 24 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
jQuery实现跟随鼠标运动图层效果的方法
Feb 02 Javascript
深入解析JavaScript中的立即执行函数
May 21 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
ztree简介_动力节点Java学院整理
Jul 19 Javascript
vue js秒转天数小时分钟秒的实例代码
Aug 08 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
Nov 30 Javascript
js实现无缝轮播图插件封装
Jul 31 #Javascript
原生js滑动轮播封装
Jul 31 #Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 #Javascript
jquery轮播图插件使用方法详解
Jul 31 #jQuery
在Uni中使用Vue的EventBus总线机制操作
Jul 31 #Javascript
jQuery带控制按钮轮播图插件
Jul 31 #jQuery
Vue之封装公用变量以及实现方式
Jul 31 #Javascript
You might like
PHP 实用代码收集
2010/01/22 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
使用JS 清空File控件的路径值
2013/07/08 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
浅析Python中的多重继承
2015/04/28 Python
python实现弹跳小球
2019/05/13 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python中的itertools的使用详解
2020/01/13 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
员工培训心得体会
2013/12/30 职场文书
学雷锋标语
2014/06/25 职场文书
法定代表人免职证明
2015/06/24 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
python异步的ASGI与Fast Api实现
2021/07/16 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技