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 相关文章推荐
基于jquery的大众点评,分类导航实现代码
Aug 23 Javascript
js左侧三级菜单导航实例代码
Sep 13 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
浅析JavaScript访问对象属性和方法及区别
Nov 16 Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 Javascript
微信小程序实现图片预加载组件
Jan 18 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
Feb 02 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
python虚拟环境 virtualenv的简单使用
Jan 21 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函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
js 事件小结 表格区别
2007/08/13 Javascript
javascript脚本调试方法小结
2008/11/24 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
js中实例与对象的区别讲解
2019/01/21 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python创建列表并给列表赋初始值的方法
2015/07/28 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
pandas中的series数据类型详解
2019/07/06 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
厨房工作人员岗位职责
2013/11/15 职场文书
行政经理的岗位职责
2013/11/23 职场文书
工作交流会欢迎词
2014/01/12 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
中学生自我评价2015
2015/03/03 职场文书
道歉的话怎么说
2015/05/12 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
2019新员工心得体会
2019/06/25 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技
详解CSS3浏览器兼容
2022/12/24 HTML / CSS