Vue基础案例

1、电影列表,点击谁谁就加粗

Vue中样式的动态绑定,使用currentindex(自己添加)。一般进行遍历的时候都会用到item 和index

    <style>
        .bold {
            font-weight: 900
        }
    </style>
</head>

<body>
    <div id="app">
        <ul v-for="(item,index) in movies">
            <li :class="{bold:index==curentindex}" @click="cli(index)"> {{item}}</li>
        </ul>
    </div>
    <script src="/demo3_824/js文件/vue.js"></script>
    <script>
        let data = {
            movies: ['电影1', '电影2', '电影3', '电影4'],
            curentindex: ''
        }
        const app = new Vue({
            el: '#app',
            data: data,
            methods: {
                cli(index) {
                    this.curentindex = index
                }
            }
        })
    </script>
</body>

 2、购物车

需求:点击增加或减少,删除完显示购物车为空。

 

 


<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://how2j.cn/study/js/jquery/2.0.0/jquery.min.js"></script>
    <link href="https://how2j.cn/study/css/bootstrap/3.3.6/bootstrap.min.css" rel="stylesheet">
    <script src="https://how2j.cn/study/js/bootstrap/3.3.6/bootstrap.min.js"></script>
</head>

<body>
    <div id="app">
        <div v-show="items.length>0">
            <table class="table table-striped table-bordered table-hover  table-condensed">
                <thead>
                    <th>商品编号</th>
                    <th>商品名称</th>
                    <th>商品单价</th>
                    <th>商品数量</th>
                    <th>商品总价</th>
                    <th>商品操作</th>
                </thead>
                <tbody>
                    <tr v-for="(item,index) in items">
                        <td>{{index+1}}</td>
                        <td>
                            {{item.name}}
                        </td>
                        <td>
                            {{item.price}}
                        </td>
                        <td>
                            <button @click="decre(index)" :disabled="item.number<=0">-</button> {{item.number}} <button @click="incre(index)">+</button>
                        </td>
                        <td>
                            {{totalprice(index)}}
                        </td>
                        <td><button @click="del(index)">删除</button></td>
                    </tr>
                </tbody>
            </table>
            <h4>合计:{{Price}}</h4>
        </div>
        <div v-show="items.length<=0">购物车为空</div>
    </div>
    <script src="/demo3_824/js文件/vue.js"></script>
    <script>
        let data = {
            items: [{
                name: '苹果',
                price: 20,
                number: 1,
                totoalprice: 0
            }, {
                name: '香蕉',
                price: 13,
                number: 1,
                totoalprice: 0
            }, {
                name: '哈密瓜',
                price: 50,
                number: 1,
                totoalprice: 0
            }]
        }
        const app = new Vue({
            el: '#app',
            data: data,
            //商品总价部分的数据处理
            computed: {
                Price() {
                    let result = 0
                    for (i = 0; i < this.items.length; i++) {
                        result += this.items[i].price * this.items[i].number
                    }
                    return '¥' + result.toFixed(2)
                }
            },
            methods: {
                totalprice(index) {
                    this.items[index].totoalprice = this.items[index].price * this.items[index].number
                    return this.items[index].totoalprice
                },
                decre(index) {
                    this.items[index].number--
                },
                incre(index) {
                    this.items[index].number++
                },
                del(index) {
                    this.items.splice(index, 1)
                }
            }
        })
    </script>
</body>

</html>

三、todolist

 参考:Vue案例之todoLIst实现 - 小小的少年 - 博客园 (cnblogs.com)

   <style>
        .do {
            text-decoration: line-through;
        }
        
        .div1 {
            width: 400px;
            height: 100px;
            border-style: dashed;
            margin-bottom: 50px;
        }
        
        .div2 {
            width: 500px;
            border-style: dashed
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="div1">
            <h2>新增</h2>
            <input type="text" v-model="willdoing"><span>&nbsp;</span><button @click="add">添加</button>
        </div>

        <div>
            <div class="div2" v-show="listshow[0]">
                <!-- 所有任务列表 -->
                <h2>所有任务列表</h2>
                <ul>
                    <li v-for="(item,index) in listwill" @click="ido(index)" :class="{do:item.cur}">
                        {{item.name}}
                    </li>
                </ul>
            </div>
            <!-- 已经完成的任务列表 -->
            <div class="div2" v-show="listshow[1]">
                <h2>完成任务列表</h2>
                <ul>
                    <li v-for="(item,index) in listdone">
                        {{item.name}}
                    </li>
                </ul>
            </div>
            <!-- 未完成的任务列表 -->
            <div class="div2" v-show="listshow[2]">
                <h2>未完成任务列表</h2>
                <ul>
                    <li v-for="(item,index) in listless">
                        {{item.name}}
                    </li>
                </ul>
            </div>
        </div>

        <div class="div3">
            操作:<button @click="btn1(0)">所有</button><span>&nbsp;</span><button @click="btn1(1)">完成</button><span>&nbsp;</span><button @click="btn1(2)">未完成</button>
        </div>
    </div>
    <script src="/demo3_824/js文件/vue.js"></script>
    <script>
        let data = {
            // listwill是数组,里面存放了一个个的对象,包括任务名称属性,和是否完成属性
            listwill: [], //所有的任务列表
            willdoing: ' ',
            done: '',
            cur: '',
            //已经完成的任务列表
            listdone: [],
            //未完成的任务列表
            listless: [],
            //存放显示界面
            listshow: [false, false, false]
        }
        const app = new Vue({
            el: '#app',
            data: data,
            computed: {

            },
            methods: {
                //1、添加计划进去
                add() {
                    if (this.willdoing.trim() != '') {
                        let obj = {
                            name: this.willdoing,
                            cur: false
                        }
                        this.listwill.push(obj)
                        this.listless.push(obj)
                        this.willdoing = ""
                        this.listshow = [false, false, false]
                        this.listshow[0] = true
                    } else {
                        alert('请输入..')
                    }
                },
                //添加点击时间,点击后,文字划伤中线
                ido(index) {
                    if (this.listless.length > 0) {
                        console.log(2);
                        this.listwill[index].cur = true
                        this.listdone.push(this.listwill[index])
                        console.log(this.listwill[index]);
                        this.listless.splice(this.listless.indexOf(this.listwill[index]), 1)
                            //当所有的任务完成时,所有的操作就没有
                    }
                    if (this.listless.length == 0) {}
                },
                btn1(index) {
                    this.listshow = [false, false, false]
                    this.listshow[index] = true
                }
            }
        })
    </script>
</body>

</html>

v-model添加代办事项:

push()方法:想数组末尾添加元素

四、图书管理

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://how2j.cn/study/js/jquery/2.0.0/jquery.min.js"></script>
    <link href="https://how2j.cn/study/css/bootstrap/3.3.6/bootstrap.min.css" rel="stylesheet">
    <script src="https://how2j.cn/study/js/bootstrap/3.3.6/bootstrap.min.js"></script>
    <style>
        .red {
            color: red
        }
    </style>
</head>

<body>
    <div id="app">
        <div>
            <button @click="showpage(0)">全部</button>
            <button @click="showpage(1)">已借阅</button>
            <button @click="showpage(2)">未借阅</button> 总计{{totalbooks.length}}本,已借阅{{donebooks.length}},当前可借阅{{ingbooks.length}}本
        </div>
        <table class="table">
            <thead>
                <th>序号</th>
                <th>图书名称</th>
                <th>图书作者</th>
                <th>图书价格</th>
                <th>图书出版社</th>
                <th>图书状态</th>
                <th>图书操作</th>
            </thead>
            <!-- 全部书籍页面 -->
            <tbody v-show="pageshow[0]">
                <tr v-for="(item,index) in totalbooks">
                    <td>{{index+1}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.author}}</td>
                    <td>{{item.price}}</td>
                    <td>{{item.published}}</td>
                    <td v-bind:class='{red:item.status=="已借阅"}'>{{item.status}}</td>
                    <td><button @click="dothis(index)">{{item.cando}}</button></td>
                </tr>
            </tbody>
            <!-- 已借阅书籍页面 -->
            <tbody v-show="pageshow[1]">
                <tr v-for="(item,index) in donebooks">
                    <td>{{index+1}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.author}}</td>
                    <td>{{item.price}}</td>
                    <td>{{item.published}}</td>
                    <td v-bind:class='{red:item.status=="已借阅"}'>{{item.status}}</td>
                    <td><button @click="dothis1(index)">{{item.cando}}</button></td>
                </tr>
            </tbody>
            <!-- 未借阅书籍页面 -->
            <tbody v-show="pageshow[2]">
                <tr v-for="(item,index) in ingbooks">
                    <td>{{index+1}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.author}}</td>
                    <td>{{item.price}}</td>
                    <td>{{item.published}}</td>
                    <td v-bind:class='{red:item.status=="已借阅"}'>{{item.status}}</td>
                    <td><button @click="dothis2(index)">{{item.cando}}</button></td>
                </tr>
            </tbody>
        </table>
        </table>
    </div>
    <script src="/demo3_824/js文件/vue.js">
    </script>
    <script src="图书管理.js"></script>
</body>

</html>
let data = {
    //存储图书信息
    totalbooks: [{
        name: 'JS程序设计',
        author: '小明',
        price: 99,
        published: '机械工业出版社',
        status: '未借阅',
        cando: '借阅'
    }, {
        name: 'JS程序设计',
        author: '小明',
        price: 78,
        published: '机械工业出版社',
        status: '未借阅',
        cando: '借阅'
    }, {
        name: 'JS程序设计',
        author: '小明',
        price: 49,
        published: '机械工业出版社',
        status: '未借阅',
        cando: '借阅'
    }, {
        name: 'JS程序设计',
        author: '小明',
        price: 39,
        published: '机械工业出版社',
        status: '未借阅',
        cando: '借阅'
    }],
    pageshow: [true, false, false]
}
const app = new Vue({
    el: '#app',
    data: data,
    computed: {
        //未借阅课本
        ingbooks() {
            let obj = []
            obj = this.totalbooks.slice()
            return obj
        },
        donebooks() {
            let obj = []
            for (let i = 0; i < this.ingbooks.length; i++) {
                if (!this.totalbooks.includes(this.ingbooks[i])) {
                    obj.push(this.ingbooks[i])
                        // 一定要注意使用splice方法会修改原数组
                }
            }
            return obj
        }
    },
    methods: {
        dothis(index) {
            //借阅书籍
            if (this.totalbooks[index].status == '未借阅') {

                //1、更改书籍状态
                this.totalbooks[index].status = '已借阅'
                this.totalbooks[index].cando = '归还'
                    //修改已借阅书籍
                this.donebooks.push(this.totalbooks[index])
                    //修改未借阅的书籍
                this.ingbooks.splice(this.ingbooks.indexOf(this.totalbooks[index]), 1)
                    //归还书籍
            } else if (this.totalbooks[index].status == '已借阅') {

                this.totalbooks[index].status = '未借阅'
                this.totalbooks[index].cando = '借阅'
                    //修改已借阅书籍
                this.donebooks.splice(this.donebooks.indexOf(this.totalbooks[index]), 1)
                    //修改未借阅的书籍
                this.ingbooks.push(this.totalbooks[index])

            }
        },
        showpage(inde) {
            this.pageshow = [false, false, false]
            this.pageshow[inde] = true
        },
        dothis1(index) {
            this.donebooks[index].status = '未借阅'
            this.donebooks[index].cando = '借阅'
            this.ingbooks.push(this.donebooks[index])
            this.donebooks.splice(this.donebooks.indexOf(this.donebooks[index]), 1)
        },
        dothis2(index) {
            this.ingbooks[index].status = '已借阅'
            this.ingbooks[index].cando = '归还'
            this.donebooks.push(this.ingbooks[index])
            this.ingbooks.splice(this.ingbooks.indexOf(this.ingbooks[index]), 1)
        }
    }
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夕ξ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值