在上一节中,我们学习了VueJS响应接口的用法,其中主要包括vue.watch、vue.set和vue.delete的使用。在本节我们提供2个VueJS实战开发的实例,其中第一个是使用VueJS实现货币转换器,第二个实例是实现用户管理。
1、VueJS实现货币转换器
<
!DOCTYPE html>
<
html lang="zh_CN"><
head>
<
meta charset="UTF-8">
<
meta name="viewport" content="width=device-width, initial-scale=1.0">
<
meta http-equiv="X-UA-Compatible" content="ie=edge">
<
title>VueJS - 货币转换器<
/title>
<
script src="http://img.readke.com/220411/091Z551T-0.jpg"><
/script>
<
/head><
body>
<
style>
#app {
padding: 20px 15px 15px 15px;
margin: 0 0 25px 0;
width: auto;
background-color: #e7e7e7;
}span,
option,
input {
font-size: 25px;
}
<
/style><
div id="app" style="">
<
h1>货币转换器<
/h1>
<
span>输入数字:<
/span><
input type="number" v-model.number="amount" placeholder="输入数字" /><
br /><
br />
<
span>原始货币:<
/span>
<
select v-model="convertfrom" style="width:300px;
font-size:25px;
">
<
option v-for="(a, index) in currencyfrom" v-bind:value="http://www.srcmini.com/a.name">{{a.desc}}<
/option>
<
/select>
<
span>转换为:<
/span>
<
select v-model="convertto" style="width:300px;
font-size:25px;
">
<
option v-for="(a, index) in currencyfrom" v-bind:value="http://www.srcmini.com/a.name">{{a.desc}}<
/option>
<
/select><
br /><
br />
<
span> {{amount}} {{convertfrom}} 等于 {{finalamount}} {{convertto}}<
/span>
<
/div><
script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
name: '',
currencyfrom: [
{ name: "USD", desc: "US Dollar" },
{ name: "EUR", desc: "Euro" },
{ name: "INR", desc: "Indian Rupee" },
{ name: "BHD", desc: "Bahraini Dinar" }
],
convertfrom: "INR",
convertto: "USD",
amount: ""
},
computed: {
finalamount: function () {
var to = this.convertto;
var from = this.convertfrom;
var final;
switch (from) {
case "INR":
if (to == "USD") {
final = this.amount * 0.016;
}
if (to == "EUR") {
final = this.amount * 0.013;
}
if (to == "INR") {
final = this.amount;
}
if (to == "BHD") {
final = this.amount * 0.0059;
}
break;
case "USD":
if (to == "INR") {
final = this.amount * 63.88;
}
if (to == "EUR") {
final = this.amount * 0.84;
}
if (to == "USD") {
final = this.amount;
}
if (to == "BHD") {
final = this.amount * 0.38;
}
break;
case "EUR":
if (to == "INR") {
final = this.amount * 76.22;
}
if (to == "USD") {
final = this.amount * 1.19;
}
if (to == "EUR") {
final = this.amount;
}
if (to == "BHD") {
final = this.amount * 0.45;
}
break;
case "BHD":
if (to == "INR") {
final = this.amount * 169.44;
}
if (to == "USD") {
final = this.amount * 2.65;
}
if (to == "EUR") {
final = this.amount * 2.22;
}
if (to == "BHD") {
final = this.amount;
}
break
}
return final;
}
}
});
<
/script>
<
/body><
/html>
文章图片
【2个VueJS实战开发实例】说明——在上面的例子中,我们创建了一个货币转换器,它将货币的一个值转换为其他货币的选定值。当我们在文本框中输入要转换的金额时,转换后将显示相同的内容,这里使用computed属性来进行货币转换所需的计算。
2、VueJS实现用户管理
<
!DOCTYPE html>
<
html lang="zh_CN"><
head>
<
meta charset="UTF-8">
<
meta name="viewport" content="width=device-width, initial-scale=1.0">
<
meta http-equiv="X-UA-Compatible" content="ie=edge">
<
title>VueJS - 用户资料详情<
/title>
<
script src="http://img.readke.com/220411/091Z551T-0.jpg"><
/script>
<
/head><
body>
<
style>
#app {
padding: 20px 15px 15px 15px;
margin: 0 0 25px 0;
width: auto;
}span,
option,
input {
font-size: 20px;
}.Table {
display: table;
width: 80%;
}.Title {
display: table-caption;
text-align: center;
font-weight: bold;
font-size: larger;
}.Heading {
display: table-row;
font-weight: bold;
text-align: center;
}.Row {
display: table-row;
}.Cell {
display: table-cell;
border: solid;
border-width: thin;
padding-left: 5px;
padding-right: 5px;
width: 30%;
}
<
/style><
div id="app" style="">
<
h1>用户资料详情<
/h1>
<
span>名字<
/span>
<
input type="text" placeholder="输入名字" v-model="fname" />
<
span>姓<
/span>
<
input type="text" placeholder="输入姓" v-model="lname" />
<
span>地址<
/span>
<
input type="text" placeholder="输入地址" v-model="addr" />
<
button v-on:click="showdata" v-bind:style="styleobj">添加<
/button>
<
br />
<
br />
<
customercomponent v-for="(item, index) in custdet" v-bind:item="item" v-bind:index="index" v-bind:itr="item"
v-bind:key="item.fname" v-on:removeelement="custdet.splice(index, 1)">
<
/customercomponent>
<
/div><
script type="text/javascript">
Vue.component('customercomponent', {
template: '<
div class = "Table"><
div class = "Row"v-bind:style = "styleobj"><
div class = "Cell"><
p>{{itr.fname}}<
/p><
/div><
div class = "Cell"><
p>{{itr.lname}}<
/p><
/div><
div class = "Cell"><
p>{{itr.addr}}<
/p><
/div><
div class = "Cell"><
p><
button v-on:click = "$emit(\'removeelement\')">X<
/button><
/p><
/div><
/div><
/div>',
props: ['itr', 'index'],
data: function () {
return {
styleobj: {
backgroundColor: this.getcolor(),
fontSize: 20
}
}
},
methods: {
getcolor: function () {
if (this.index % 2) {
return "#FFE633";
} else {
return "#D4CA87";
}
}
}
});
var vm = new Vue({
el: '#app',
data: {
fname: '',
lname: '',
addr: '',
custdet: [],
styleobj: {
backgroundColor: '#2196F3!important',
cursor: 'pointer',
padding: '8px 16px',
verticalAlign: 'middle',
}
},
methods: {
showdata: function () {
this.custdet.push({
fname: this.fname,
lname: this.lname,
addr: this.addr
});
this.fname = "";
this.lname = "";
this.addr = "";
}
}
});
<
/script>
<
/body><
/html>
文章图片
说明——在上面的例子中,我们需要输入三个文本框——名字、姓氏和地址。有一个add按钮,用于添加用户,用delete按钮删除用户。
表格式是使用组件创建的,click按钮与父组件交互,使用emit事件从数组中删除元素,输入的值存储在数组中,并使用prop属性与子组件共享相同的值。
推荐阅读
- VueJS响应接口用法详解
- VueJS渲染函数(render function)用法和原理详解
- VueJS混入mixins用法完全解读教程
- VueJS路由使用完全解读
- VueJS自定义指令和过滤器用法详解
- VueJS过渡和动画(transition & animation)使用详细教程
- VueJS渲染指令v-for、v-if、v-else、v-show用法详解
- VueJS事件处理v-on用法全解
- Python字典(Dictionary)完全解读和用法详解