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 相关文章推荐
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
详解javascript数组去重问题
Nov 06 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
jquery animate动画持续运动的实例
Nov 29 jQuery
angular2模块和共享模块详解
Apr 08 Javascript
JS文件中加载jquery.js的实例代码
May 05 jQuery
详解Vue开发微信H5微信分享签名失败问题解决方案
Aug 09 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 Javascript
JS实现放大镜效果
Sep 21 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 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
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
Exjs 入门篇
2010/04/07 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
python读取Excel实例详解
2018/08/17 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
合作意向书格式及范文
2014/03/31 职场文书
2014年政协工作总结
2014/12/09 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
创业计划书之废品回收
2019/09/26 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle