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 相关文章推荐
学习YUI.Ext第五日--做拖放Darg&amp;Drop
Mar 10 Javascript
Div自动滚动到末尾的代码
Oct 26 Javascript
javascript 跳转代码集合
Dec 03 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
May 30 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 Javascript
微信小程序封装自定义弹窗的实现代码
May 08 Javascript
实现一个简单得数据响应系统
Nov 11 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
77A一级收信机修理记
2021/03/02 无线电
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php文件上传类的分享
2017/07/06 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
教师现实表现材料
2014/02/14 职场文书
音乐教育感言
2014/03/05 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
大学活动总结模板
2014/07/10 职场文书
先进教师事迹材料
2014/12/16 职场文书
义卖募捐活动总结
2015/05/09 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书