zoukankan      html  css  js  c++  java
  • 01.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="./lib/vue-2.4.0.js"></script>
      <script src="./lib/vue-resource-1.3.4.js"></script>
      <link rel="stylesheet" href="./lib/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>
  • 相关阅读:
    2015.2.27 UltraEdit中显示XML结构
    2015.1.31 DataGridView自动滚动到某行
    2015.1.15 利用函数实现将一行记录拆分成多行记录 (多年想要的效果)
    2015.1.15 利用Oracle函数返回表结果 重大技术进步!
    2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效
    2015.1.8 Left join 左连接
    2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
    delphi 遍历窗口
    delphi 访问 protected 属性 哈哈
    clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈
  • 原文地址:https://www.cnblogs.com/hanotao/p/10897455.html
Copyright © 2011-2022 走看看