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 相关文章推荐
js 加载并解析XML字符串的代码
Dec 13 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
Nov 02 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
利用javascript实现web页面中指定区域打印
Oct 30 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
Javascript控制input输入时间格式的方法
Jan 28 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
Oct 22 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
node文字生成图片的示例代码
Oct 26 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python 元组(Tuple)操作详解
2014/03/11 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
200行python代码实现2048游戏
2019/07/17 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
4s店总经理岗位职责
2013/12/31 职场文书
产品促销活动策划书
2014/01/15 职场文书
元旦活动感言
2014/03/08 职场文书
公司节能减排倡议书
2014/05/14 职场文书
个人四风对照检查材料
2014/09/26 职场文书