vue2.0用法技巧汇总

1.class拼接:

vue2.0用法技巧汇总

2.select下拉截取:

<template>
<!--vip班支付报名页面-->
<div id="payRecordMain">
<div class="pay_record_vip">
<div class="pay_message">报考城市<span class="cityName" v-text="cityName">南京</span></div>
<div class="pay_message">报考驾照类别
<span class="getSelectType">
<span class="driveTypeText">{{driveType.description}}</span>
<select class="exam_type" @change="selectDriveType(driveType)" v-model="driveType">
<option v-for="licenseList in vehicleKindPriceVoList" :value="licenseList">{{licenseList.description}}</option>
</select>
<img class="img_arrow" src="../assets/select_arrow.png" alt="">
</span>
</div>
<div class="pay_message2">
<span class="baoming">报名费</span>
<span style="float:right">
<span :class="{ling_throught:hasRecommend||(discount&&discount!='0')}">{{totalPay|formatMoney}}</span>
<span class="totalPayStyle" v-if="hasRecommend||(discount&&discount!='0')">{{newTotalPay|formatMoney}}</span>
</span>
</div>
<div class="pay_message3" v-if="hasRecommend"><span>通过<span v-text="recommendedName"></span>推荐你使用多伦学车,已为您优惠</span><span v-text="recommendedRelief"></span><span>元</span></div>
<div class="select">请选择支付方式</div>
<label for="radio2">
<div class="payment">
<img src="../assets/weixinzhifu.png">
<span class="pay_text">微信支付</span>
<input id="radio2" type="radio" name="radio" value="2" checked="checked"/>
</div>
</label>
<div class="agree"> <span class="agreeTest1">同意</span>
<span @click="agree_select()" class="agreeTest2">《支付免责条款》</span>
<div class="checkboxAgree2" @click="selectInput()" :class="{checkboxAgree2Sel:checkboxAgree2==1}">
</div>
</div>
</div>
<div class="goPaybuttom_vip">
<div class="heji">合计:
<span v-if="!hasRecommend&&!discount&&discount=='0'" class="money2">{{totalPay|formatMoney}}</span>
<span v-if="hasRecommend||(discount&&discount!='0')" class="money2" >{{newTotalPay|formatMoney}}</span>
</div>
<div class="submit" @click="goPay()">
去结算(1)
</div>
</div>
</div>
</template>
<script>
import Vue from 'vue';
import tool from '../common/tools';
import httpService from '../common/httpService';
import commonErr from './CommonErr';
import commonToast from '../common/commonToast';
import {Toast ,Loadmore} from 'mint-ui';
import MessageBox from 'mint-ui/lib/message-box';
import 'mint-ui/lib/loadmore/style.css';
import 'mint-ui/lib/toast/style.css';
import 'mint-ui/lib/message-box/style.css';
import '../css/payRecordVip.css'; Vue.component(Loadmore.name, Loadmore);
Vue.component(MessageBox.name, MessageBox);
export default {
data() {
return {
hideTime:2000,
checkboxAgree2:1,//默认免责条款勾选框选中
driveType:"",//驾照类别,初始C1类型
settleAccounts:null,
payParams:{},
phoneNum:null, //推荐人电话
getCount:{},//获取优惠人参数
getcodeUrl:" ",
recommendId:" ", //推荐人Id
recommendPhone:" ", //推荐人号码
discount:tool.Request('discount')?tool.Request('discount'):"0 ",//活动优惠金额
cityName:tool.Request('cityName'), //获取城市名
vehicleKindPriceVoList:[],//加省略号
totalPay:0,//结算价格
hasRecommend:false, //是否有推荐人
newTotalPay:null,
recommendedName:" ",//推荐人姓名
//微信支付 zhw 2016-09-07
appId:" ",
timeStamp:" ",
nonceStr:" ",
packageValue:" ",
paySign:" ",
toGopay:1,
testCouponsCut:['ouIgswP-H4FMZIwsbz8DdCEd0LaM'],
valueForWeChats:" ",
recommendedRelief:"",
openid:tool.getUrlRequestParam().openid,
cityClassId: tool.Request('cityClassId'),
} },
components:{
commonErr:commonErr
},
filters:{
formatMoney : function(money){
/*var floatNum=parseFloat(money),
intNum=parseInt(money),
subtract=floatNum-intNum;
if(subtract>=0.5){
subtract=1;
}else{
subtract=0;
}
money=intNum+subtract;*/
money=parseFloat(money).toLocaleString();
return "¥"+money;
}
},
mounted: function() {
this.payRecordVipMain();
},
methods:{
payRecordVipMain:function(){
var self=this;
self.recommendedRelief=tool.Request('recommendedRelief');
self.vehicleKindPriceVoList=JSON.parse(decodeURIComponent(tool.Request("vehicleKindPriceVoList")));
if (window.valueForWeChat) {
self.valueForWeChats = window.valueForWeChat;
}
self.settleAccounts = "/topayServlet";
self.getcodeUrl ='/mw/recommendpolite/reliefAmount.do';//获取推荐人接口 //渲染当前页面信息
for(var i=0;i<self.vehicleKindPriceVoList.length;i++){
var val=self.vehicleKindPriceVoList[i];
if(val.vehicleKind=="C1"){
self.getDescriptions = val.description;
self.driveType = val;
self.totalPay = val.expense;
self.newTotalPay = val.expense; //活动减免
if (self.discount) {
self.newTotalPay = (Math.round(self.newTotalPay * 100) - Math.round(self.discount * 100)) / 100;//减免后的金额
if (self.newTotalPay < 0) {
self.newTotalPay = 0;
}
} } if(val.description.length>0){
val.description=val.vehicleKind +"( "+val.description+") ";
}else{
val.description=val.vehicleKind;
}
} //获取推荐人号码参数
self.getCount = {
isAchieve:1,
recommendPhoneNo:"",
recommendedPhoneNo: self.valueForWeChats.phoneNo,
needBind: 0,
type_wc: 2,
};
self.getBackRecommendMsg(self.getcodeUrl, self.getCount);
},
//获取推荐信息
getBackRecommendMsg:function (url, params) {
var self=this;
httpService.get(url, params).then(function (data) {
if (data.code != commonToast["MSG_SUCCESS"]) {
self.hasRecommend = false;
//data.code==1002:没有查询到该手机的相关推荐记录哦
if(data.code==1002){
// MessageBox.alert(data.msg.then(action => {
// self.getRecommend();
// });
}else{
Toast({
message:data.msg,
position: 'middle',
duration:self.hideTime
});
}
return;
}
self.hasRecommend = true;
self.newTotalPay = (Math.round(self.totalPay * 100) - Math.round(self.recommendedRelief * 100))/100;
if (self.newTotalPay < 0) {
self.newTotalPay = 0;
} //活动减免
if (self.discount) {
self.newTotalPay = (Math.round(self.newTotalPay * 100) - Math.round(self.discount * 100)) / 100;//减免后的金额
if (self.newTotalPay < 0) {
self.newTotalPay = 0;
}
} self.recommendId = data.data.recommendId;
self.recommendPhone = data.data.recommendPhone;
self.recommendedName = data.data.recommendName; },function(){ })
}, //下拉框更改时,变更绑定数据
selectDriveType:function (t) {
// if(!t){
// return;
// }
var self=this;
console.log(JSON.stringify(t))
self.totalPay = t.expense;
self.newTotalPay = t.expense;
//self.driveType = t;
//self.driveType = t.vehicleKind +"( "+t.description+")";
if (self.hasRecommend) {
self.newTotalPay = (Math.round(self.totalPay * 100) - Math.round(recommendedRelief * 100))/100;//减免后的金额
if (self.newTotalPay < 0) {
self.newTotalPay = 0;
}
}else{
self.newTotalPay = self.totalPay;
} //活动减免
if (self.discount) {
self.newTotalPay = (Math.round(self.newTotalPay * 100) - Math.round(self.discount * 100)) / 100;//减免后的金额
if (self.newTotalPay < 0) {
self.newTotalPay = 0;
}
} self.getDescriptions = t.descriptions;
},
//弹出免责条款
agree_select:function () {
var content = '云支付作为网络交易平台,除云支付特定自行销售的产品外,您从云支付上获取的任何产品信息均为云支付用户(包括个人用户及商户)自行发布,云支付对其真实性、合法性及有效性不做任何形式的保证,您应自行判断并承担风险。所有责任由该信息发布者承担。';
MessageBox.alert(content, '报名协议');
},
//点击勾选免责条款
selectInput:function () {
var self=this;
if (self.checkboxAgree2 == 1) {
self.checkboxAgree2 = 0;
} else if (self.checkboxAgree2 == 0) {
self.checkboxAgree2 = 1;
}
},
//去支付按钮事件
goPay:function () {
var self=this;
// debugger;
if(self.toGopay == 0){
return;
}
if (self.checkboxAgree2 == 1) {
Toast({
message:commonToast["indexLoading"],
position: 'middle',
duration:self.hideTime
});
//接口未通,暂时屏蔽去支付按钮的方法(调测微信支付时放开)
var pay_params = {
studentId: self.valueForWeChats.studentId,
paymentType: '2',
stu_account: self.valueForWeChats.phoneNo,
cityClassId: self.cityClassId,
driveType: self.driveType,
totalPay: self.newTotalPay,
recommendId: self.recommendId,
recommendAccount: self.recommendPhone,
openid: tool.getUrlRequestParam().openid,
};
self.getBackDate(self.settleAccounts, pay_params);
//接口未通,暂时屏蔽去支付按钮的方法(调测微信支付时放开)
} else {
Toast({
message:commonToast["payAgree"],
position: 'middle',
duration:self.hideTime
});
}
},
//获取返回的订单信息并通过native调用支付工具
getBackDate:function(url, params) {
var self=this;
httpService.get(url, params).then(function (data) {
if (data.code == commonToast["MSG_FAILED"]) {
//初始化支付控件失败
Toast({
message: commonToast["payFailInit"],
position: 'middle',
duration:self.hideTime
});
} else {
if(data.flag==2){
//您已支付成功,不要重复支付
Toast({
message: commonToast["payRepeat"],
position: 'middle',
duration:self.hideTime
});
return;
}
self.appId = data.appid;
self.timeStamp = data.timeStamp;
self.nonceStr = data.nonceStr;
self.packageValue = data.package;
self.paySign = data.sign;
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": appId,
"timeStamp": timeStamp,
"nonceStr": nonceStr,
"package": packageValue,
"signType": "MD5",
"paySign": paySign
}, function (res) {
// alert(res.err_msg);
// alert(res.err_code + res.err_desc + res.err_msg);
if (res.err_msg == "get_brand_wcpay_request:ok") {
MessageBox.alert(commonToast["paySuccess"]).then(action => {
//支付成功 回到首页
var url = "indexTab/index",
params={
openid:tool.getUrlRequestParam().openid,
};
tool.goUrl(url,params);
});
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
//取消支付!
Toast({
message:commonToast["payCancel"],
position: 'middle',
duration:self.hideTime
});
} else {
//alert("支付失败");
//支付失败!
Toast({
message:commonToast["payFail"],
position: 'middle',
duration:self.hideTime
});
}
})
}
},function(){ });
$http({
method: "get",
url: url,
params: params
}).success(function (data) {
$ionicLoading.hide();
if (data.code == 0) {
$ionicLoading.show({
template: "初始化支付控件失败..."
});
$timeout(function () {
$ionicLoading.hide()
}, 3000);
} else {
if(data.flag==2){
$ionicLoading.show({
template: "您已支付成功,不要重复支付"
});
$timeout(function () {
$ionicLoading.hide()
}, 3000);
return;
}
appId = data.appid;
timeStamp = data.timeStamp;
nonceStr = data.nonceStr;
packageValue = data.package;
paySign = data.sign;
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": appId,
"timeStamp": timeStamp,
"nonceStr": nonceStr,
"package": packageValue,
"signType": "MD5",
"paySign": paySign
}, function (res) {
// alert(res.err_msg);
// alert(res.err_code + res.err_desc + res.err_msg);
if (res.err_msg == "get_brand_wcpay_request:ok") {
defineAlert("支付成功!", function () {
//微信支付成功后,做业务处理
var url = "indexTab/index",
params={
openid:tool.getUrlRequestParam().openid,
};
tool.goUrl(url,params);
//var url = valueForWeChat.html5BaseUrl + "/stu/stu_index.html?openid="+openid +"#/index";
},true); } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
defineAlert("取消支付!", function () { });
} else {
//alert("支付失败");
defineAlert("支付失败", function () { });
}
})
}
}).error(function () {
$ionicLoading.show({
template: "初始化支付控件失败..."
});
$timeout(function () {
$ionicLoading.hide()
}, 3000);
});
},
//获取优惠
// getRecommend:function () {
// var alertStr = '<div id="J_alert" class="grayBackground" style="z-index:10">' + '<div class="dialogCover"></div>' + '<div class="dialog-div">' + '<div class="dialog">' + '<div class="phoneTest">请输入推荐人手机号码</div>' + '<div class="inputPhone"><input class="inputValue" type="text" maxlength="11"></div>' + '<div class="btn-bar">' + '<div class="btn-bar-inner">' + '<div class="btn-alert-single confirmButton-blue-border" id="J_btn_alert_ok">确定</div>' + '</div></div></div></div></div>';
// if ($("#J_alert").length) {
// $("#J_alert").remove();
// }
// $("body").append(alertStr);
// dialog_re_adapt(100);
// dialog_re_adapt(200);
// dialog_re_adapt_but(100);
// $("#J_btn_alert_ok").click(function () {
// //点击确定时获取输入框的值并传给后台
// phoneNum = $(".inputValue").val();
// getCount = {
// recommendPhoneNo: phoneNum,
// recommendedPhoneNo: valueFromNativeAll.phoneNo,
// type_wc: 2,
// openid: openid,
// needBind: 1
// };
// getcode_url = valueFromNativeAll.serverBaseUrl + '/mw/recommendpolite/reliefAmount.do';
// var real = checkPhone();
// if (!real) {
// /* defineAlert2('手机号码格式不正确哦!请您重新输入', function () {
// self.getRecommend();
// });*/
// $ionicLoading.show({
// template: '手机号码格式不正确哦!请您重新输入'
// });
// setTimeout(function () {
// $ionicLoading.hide();
// }, autoHideTime);
// } else {
// // $("#J_alert").hide();
// $("#J_alert").remove();
// getBackRecommendMsg(getcode_url, getCount);
// }
// // $("#J_alert").hide();
// });
// $(".dialogCover").click(function () {
// //$("#J_alert").hide();
// $("#J_alert").remove();
// });
//
// function dialog_re_adapt(e) {
// !e ? e = 0 : "";
// setTimeout(function () {
// var e = $(window).height(),
// t = $(".dialog-div").height();
// $(".dialog-div").css("top", (e - t) / 2 + "px")
// }, e)
// }
//
// function dialog_re_adapt_but(e) {
// !e ? e = 0 : "";
// setTimeout(function () {
// var e = $(window).height(),
// t = $(".goPaybuttom_vip").height();
// $(".goPaybuttom_vip").css("top", (e - t)+ "px");
// $(".dialogCover").css("height", e+ "px");
// }, e)
// }
//
// return false;
// }, },
}
</script>

3.实时监听input的value值,vue中虽然有和angular双向数据绑定ng-model一样功能的指令v-model,但是并不能实时监听,而@change也不能实时对input的value值进行实时运行,后来找到一个watch方法能实时监听,并实时响应,api路径:https://vuefe.cn/v2/api/#vm-watch

代码如下:

<template>
<div id="baiduSearchMain">
<div id="r-result" class="pr">
<div class="pa imputWrap">
<input type="text" id="suggestId" v-model="inputAdd" size="20"
value="" placeholder="请输入关键字" class="searchIpt"/>
<img src="../assets/icon_search.png"/>
</div>
</div>
<div class="currentAddress">
<div class="AddressT">当前位置</div>
<div class="row">
<div class="currentAddressD" @click="backToPrePage()">{{currentAddress}}</div>
<div class="currentAddressGdp" @click="resetLocation()"><img src="../assets/icon_locationg.png" alt="重新定位"/>
<div id="allmap" style="display:none;"></div>
</div>
</div>
</div>
<div class="fujinAddress">
<div class="AddressT">附近地址</div>
<div class="AddressC">
<div class="fujinAddressDetail" @click="getAddress(index)" v-for="(addressDes,index) in address">
<p><img src="../assets/icon_location.png"/><span>{{addressDes.title}}</span></p>
</div>
</div>
</div>
</div>
</template>
<script>
import Vue from 'vue';
import tool from '../common/tools';
import httpService from '../common/httpService';
import commonToast from '../common/commonToast';
import ubderscore from '../common/underscore-min.js';
import {Toast ,Loadmore} from 'mint-ui';
import MessageBox from 'mint-ui/lib/message-box'; import 'mint-ui/lib/loadmore/style.css';
import 'mint-ui/lib/toast/style.css';
import 'mint-ui/lib/message-box/style.css';
import '../css/baiduSearch.css'; Vue.component(Loadmore.name, Loadmore);
Vue.component(MessageBox.name, MessageBox);
export default {
data() {
return {
currentAddress:tool.Request("currentAddress"),
gps:tool.Request('gps'),
ac:null,
timer:null,
currentPoint:null,
map:null,
address:[],//地址列表
hideTime:2000,//隐藏弱提示时间
inputAdd:""
// time:0,
}
},
watch:{
inputAdd: function (curVal,oldVal){
//      console.log(curVal,oldVal);
if(this.ac){
this.ac.search(this.inputAdd);
}
    }
},
mounted: function() {
this.baiduSearchMain();
},
methods:{
//主函数
baiduSearchMain:function(){
var self=this;
var arr = this.gps.split(",");
var currentPoint = new BMap.Point(parseFloat(arr[1]), parseFloat(arr[0]));
this.map = new BMap.Map('allmap');
this.map.centerAndZoom(currentPoint, 16); this.ac = new BMap.LocalSearch(this.map, ( //建立一个自动完成的对象
{
"onSearchComplete": function () {
var result = self.ac.getResults();
if (result) { self.address = result.xr; self.address = ubderscore.uniq(self.address, function (item) {
return item.title;
});
console.log(self.address);
}
},
"pageCapacity": 20
}));
this.ac.search(this.currentAddress);
},
//附近地址
reSearchLocation:function (e) { console.log(e.target.value)
this.value = e.target.value;
this.ac.search(e.target.value);
},
//返回上一页
backToPrePage:function () {
window.history.back();
},
getAddress:function (index) {
window.history.back();
// var stop=setInterval(function(){ // this.time++;
// if(this.time>4){
// this.time=0;
// window.history.back()
// }
// console.log(this.time)
// }, 100);
localStorage.setItem('location', JSON.stringify({
'address': this.address[index].title,
'gps': this.address[index].point.lat + ',' + this.address[index].point.lng
}));
//setTimeout(window.history.back(),3000);
},
//重新定位
resetLocation:function () {
var self=this;
Toast({
message: commonToast["baiduSeaLocation"],
position: 'middle',
duration:self.hideTime
});
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point);
var latitude = r.point.lat;
var longitude = r.point.lng;
this.gps = latitude + "," + longitude; var pt = r.point;
console.log('您的位置:'+r.point.lng+','+r.point.lat);
var geocoder = new BMap.Geocoder();
var currentPoint = r.point;
geocoder.getLocation(currentPoint, function (result) {
self.currentAddress = result.address;
localStorage.setItem('location', JSON.stringify({
'address':result.address,
'gps': self.gps
}));
self.ac.search(self.currentAddress);
});
}else {
this.currentAddress = "南京市";
localStorage.setItem('location', JSON.stringify({
'address': "南京市",
'gps': "32.0572355,118.77807441"
}));
}
},{enableHighAccuracy: true}) },
}
}
</script>
上一篇:PostgreSQL 扩展开发基础教程


下一篇:sql server数据库中 smallint, int ,bigint ,tinyint的区别与长度