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 类的使用详解
May 07 Javascript
jquery鼠标滑过提示title具体实现代码
Aug 06 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
Dec 08 Javascript
前端主流框架vue学习笔记第一篇
Jul 26 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
Aug 21 Javascript
vue计算属性及使用详解
Apr 02 Javascript
详解如何构建一个Angular6的第三方npm包
Sep 07 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
原生js实现下拉框选择组件
Jan 20 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开发框架laravel安装与配置教程
2015/03/13 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
实例浅析js的this
2016/12/11 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[00:16]热血竞技场
2019/03/06 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python中的decorator的作用详解
2018/07/26 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python3实现弹弹球小游戏
2019/11/25 Python
如何基于python实现脚本加密
2019/12/28 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
python获取linux系统信息的三种方法
2020/10/14 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
小学教师岗位职责
2013/11/25 职场文书
医药销售自荐书
2014/05/29 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
党小组考察意见
2015/06/02 职场文书
家庭贫困证明
2015/06/16 职场文书