• vue-resource改造品牌列表案例


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

    <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>Document</title>
    <script src="js/vue-2.4.0.js"></script>
    <script src="js/vue-resource-1.3.4.js"></script>
    <link rel="stylesheet" href="css/bootstrap-3.3.7.css">
    </head>

    <body>
    <div id="app">

    <div class="panel panel-primary">
    <div class="panel-heading">
    <h3 class="panel-title">添加品牌</h3>
    </div>
    <div class="panel-body form-inline">

    <label>
    Name:
    <input type="text" v-model="name" class="form-control">
    </label>

    <input type="button" value="添加" @click="add" class="btn btn-primary">
    </div>
    </div>



    <table class="table table-bordered table-hover table-striped">
    <thead>
    <tr>
    <th>Id</th>
    <th>Name</th>
    <th>Ctime</th>
    <th>Operation</th>
    </tr>
    </thead>
    <tbody>
    <tr v-for="item in list" :key="item.id">
    <td>{{item.id}}</td>
    <td>{{item.name}}</td>
    <td>{{item.ctime}}</td>
    <td>
    <a href="" @click.prevent="del(item.id)">删除</a>
    </td>
    </tr>
    </tbody>
    </table>


    </div>

    <script>
    // 如果我们通过全局配置了,请求的数据接口 根域名,则 ,在每次单独发起 http 请求的时候,请求的 url 路径,应该以相对路径开头,前面不能带 / ,否则 不会启用根路径做拼接;
    Vue.http.options.root = 'http://vue.studyit.io/';
    // 全局启用 emulateJSON 选项
    Vue.http.options.emulateJSON = true;

    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
    el: '#app',
    data: {
    name: '',
    list: [ // 存放所有品牌列表的数组
    ]
    },
    created() { // 当 vm 实例 的 data 和 methods 初始化完毕后,vm实例会自动执行created 这个生命周期函数
    this.getAllList()
    },
    methods: {
    getAllList() { // 获取所有的品牌列表
    // 分析:
    // 1. 由于已经导入了 Vue-resource这个包,所以 ,可以直接通过 this.$http 来发起数据请求
    // 2. 根据接口API文档,知道,获取列表的时候,应该发起一个 get 请求
    // 3. this.$http.get('url').then(function(result){})
    // 4. 当通过 then 指定回调函数之后,在回调函数中,可以拿到数据服务器返回的 result
    // 5. 先判断 result.status 是否等于0,如果等于0,就成功了,可以 把 result.message 赋值给 this.list ; 如果不等于0,可以弹框提醒,获取数据失败!

    this.$http.get('api/getprodlist').then(result => {
    // 注意: 通过 $http 获取到的数据,都在 result.body 中放着
    var result = result.body
    if (result.status === 0) {
    // 成功了
    this.list = result.message
    } else {
    // 失败了
    alert('获取数据失败!')
    }
    })
    },
    add() { // 添加品牌列表到后台服务器
    // 分析:
    // 1. 听过查看 数据API接口,发现,要发送一个 Post 请求, this.$http.post
    // 2. this.$http.post() 中接收三个参数:
    // 2.1 第一个参数: 要请求的URL地址
    // 2.2 第二个参数: 要提交给服务器的数据 ,要以对象形式提交给服务器 { name: this.name }
    // 3.3 第三个参数: 是一个配置对象,要以哪种表单数据类型提交过去, { emulateJSON: true }, 以普通表单格式,将数据提交给服务器 application/x-www-form-urlencoded
    // 3. 在 post 方法中,使用 .then 来设置成功的回调函数,如果想要拿到成功的结果,需要 result.body

    /* this.$http.post('api/addproduct', { name: this.name }, { emulateJSON: true }).then(result => {
    if (result.body.status === 0) {
    // 成功了!
    // 添加完成后,只需要手动,再调用一下 getAllList 就能刷新品牌列表了
    this.getAllList()
    // 清空 name
    this.name = ''
    } else {
    // 失败了
    alert('添加失败!')
    }
    }) */

    this.$http.post('api/addproduct', { name: this.name }).then(result => {
    if (result.body.status === 0) {
    // 成功了!
    // 添加完成后,只需要手动,再调用一下 getAllList 就能刷新品牌列表了
    this.getAllList()
    // 清空 name
    this.name = ''
    } else {
    // 失败了
    alert('添加失败!')
    }
    })
    },
    del(id) { // 删除品牌
    this.$http.get('api/delproduct/' + id).then(result => {
    if (result.body.status === 0) {
    // 删除成功
    this.getAllList()
    } else {
    alert('删除失败!')
    }
    })
    }
    }
    });
    </script>
    </body>
    </html>
  • 相关阅读:
    [CF1336C] Kaavi and Magic Spell
    [CF1338C] Perfect Triples
    [CF1353F] Decreasing Heights
    [CF1442B] Identify the Operations
    [CF1354E] Graph Coloring
    [CF1364D] Ehab's Last Corollary
    php-fpm和fastcgi的区别
    phpredis实现互斥锁
    关于lnmp情况下PHP单线程的理解
    客户端断开链接以后 PHP执行过程实测
  • 原文地址:https://www.cnblogs.com/lujieting/p/10447897.html
Copyright © 2020-2023  润新知