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 相关文章推荐
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
js实现人民币大写金额形式转换
Apr 27 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
Aug 24 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 Javascript
javascript中的with语句学习笔记及用法
Feb 17 Javascript
vue 避免变量赋值后双向绑定的操作
Nov 07 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
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
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
繁简字转换功能
2006/07/19 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
简单了解python的内存管理机制
2019/07/08 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
win10安装python3.6的常见问题
2020/07/01 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
办公室年终个人自我评价
2013/10/28 职场文书
大学三年的自我评价
2013/12/25 职场文书
开展创先争优活动总结
2014/08/28 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技