品牌案例-完成品牌列表的添加功能|学习笔记

简介: 快速学习品牌案例-完成品牌列表的添加功能

开发者学堂课程【Vue.js 入门与实战品牌案例-完成品牌列表的添加功能】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/586/detail/8142


品牌案例-完成品牌列表的添加功能

内容简介:

一、 表格的创建

二、 数据的传递

三、 添加功能的实现

 

一、 表格的创建

1.业务分析

首先我们需要知道应该把品牌管理案例做成什么样。打开代码(品牌列表案例.html),其实就是一个简单的列表,下面是表格,上面是添加的文本框。

我们可以在文本框输入 Id Name的值,将其添加到表格中;点击删除按钮可以删除表格中指定的数据;还可以在搜索名称关键字的文本框中输入关键字,表格就会根据关键字显示数据,如果有多个数据,都会被过滤出来。

image.png

刚一进来就获得焦点,如何让文本框进入页面就获得焦点;首先要让它获取焦点就要先获取它,然后才能给添加获取焦点的事件。在Vue中免除操作DOM元素的过程,同时也能让它获取焦点,这也是一个重点。

2.实现页面

打开前端开发软件(Visual Studio Code),新建一个html文件,输入vh,快速生成页面<!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>

</head>

<body>

 <div id= "app"></div>

<script>

var vm = new Vue({

   el: '#app',

   data: {},

   methods:{}

});

 </script>

</body>

</html>

首先,进行导包、创建一个要控制的元素("app"></div>)和创建一个Vue实例。

var vm = new Vue({

   el: '#app',

   data: {},

   methods:{}

});

然后,实现界面,"stylesheet" href= "./lib/bootstrap-3.3.7.css">。不需要使用Jquery,因为Jquery是封装DOM操作的,它是用来操作DOM的,然而,在Vue中可以免除操作DOM的过程,所以推荐不使用Jquery。最后在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>


二、数据的传递

需要把 vm 中的 data 数据同步渲染到表格中,在里面为了不手动造作 DOM,需要借助 Vue 提供的指令(v-for)。

在 data 中,使用 list 添加数据并在 tr 标签中使用 Vue 提供的指令(v-for)循环,

再添加:key(:代表属性的绑定)使得数据正确的传输,把 data 的数据同步到表格中。

<tbody>

  <tr v-for="item in list" : key="item.id">

   <td>{{ item.id }}</td>

    <td>{{ v-text=" item.name " }}</td>

     <td>{{ item.ctime }}</td>

     <td>

     <a href="">删除</a>

</td>

    </tr>

</tbody>


三、添加功能的实现

(1)实现添加功能,首先需要有一个添加框。

<div class= "panel panel-primary">

<div class= "panel-heading">

<h3 class= "panel-title">添加品牌</h3>

</div>

<div class= "panel-body form-inline " >

<lable>

  Id:

  <input type= "text" class="form-control" >

</lable>

<lable>

  Name:

     <input type= "text" class="form-control" >

</lable>

   <input type="button" value="添加" class="btn  

btn-primary" >

</div>

</div>

 (2) 实现添加功能,点这个添加按钮要获取到文本框中的值,然后把值组合成一个车的对象,然后把对象放到数组中去,在这里面我们还需要使用 Vue 进行监管,所以要在 input 中添加(v-model="id"; v-model="name";@click= "add"),点击添加按钮时,会触发 add 方法。创建按钮的点击事件,在 data 中进行数据绑定。在methods 中添加 add 方法,实现添加功能。

使用 add 方法首先需要直接从 data 中获取 id 和 name 的值。 

在 Vue 中,使用事件绑定机制,为元素指定处理函数的时候,如果加了小括号,就可以给函数传参。

(3)分析 add 方法:

1.获取到 id 和 name,直接从 data 上获取

2.组织出一个对象

3.把这个对象,调用数组的相关方法,添加到当前 data 上的 list 中

4. 注意:在 Vue 中,已经实现了数据的双向绑定,每当我们修改了 data 中的数据,Vue会默认监听到数据的改动,自动把最新的数据,应用到页面上。

5.当我们意识到上面的第四步的时候,就证明大家已经入门 Vue 了,我们更多的是在进行 VM 中 Model 数据的操作,同时,在操作 Model 数据的时候,指定的业务逻辑操作。

然后组织出一个对象,保存一个新的对象,通过

this.list.push(car)

进行绑定。例如可以使用:

var car ={id: this.id, name:this.name, ctime:new Date()}

this.list.push(car)

拼接出一个 car 对象,并保存到list中。

最后把这个对象调用数组的相关方法添加到当前 data 上的 list 中成功实现添加功能。

完整代码,如下:

<!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>

<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 " >

<lable>

  Id:

  <input type= "text" class="form-control" v-model= "id">

</lable>

<lable>

  Name:

     <input type= "text" class="form-control" v-model= "name">

</lable>

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

</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>{{ v-text=" item.name " }}</td>

      <td>{{ item.ctime }}</td>

      <td>

       <a href="">删除</a>

</td>

     </tr>

    </tbody>

  </table>

</div>

 <script>

var vm = new Vue({

 el: '#app',

 data: {  

   id: ' ',

   name: ' ',

list: [

  { id: 1, name:  '奔驰', ctime: new Date() },

  { id: 2, name:  '宝马', ctime: new Date() }

 ]

},

 methods: {

   add(){

    var car ={id: this.id, name:this.name, ctime:new Date()}

    this.list.push(car)

   }

}

});

 </script>

</body>

</html>


相关文章
|
SQL 关系型数据库 MySQL
MySQL查询(万字超详细版)
本文详细介绍了数据库中的单表和多表查询方法。首先,单表查询包括全列查询、指定列查询及去重查询,其中应避免使用`*`以提高效率。接着,文章讲解了排序查询,包括升序和降序,并展示了如何通过多个字段进行排序。在多表查询部分,本文解释了内连接、外连接(左外连接和右外连接)以及自连接的概念和用法,提供了丰富的代码示例
529 2
MySQL查询(万字超详细版)
|
关系型数据库 MySQL 5G
Mysql数据迁移3个快速方法与数据库恢复
Mysql数据迁移3个快速方法与数据库恢复
2913 0
|
测试技术 Linux Apache
掌握JMeter参数化技巧:通过CSV文件实现高效登录压测
在本文中,我们将探讨如何使用 Apache JMeter 通过 CSV 数据文件进行登录性能测试参数化。首先创建一个包含用户名和密码的 `users.csv` 文件。接着在 JMeter 中,创建测试计划,添加线程组,配置 CSV 数据集,设置文件路径、编码及变量名。然后,创建 HTTP 请求并添加参数,使用 `${username}` 和 `${password}` 引用 CSV 中的数据。最后,添加监听器如查看结果树和聚合报告以分析测试结果。通过这种方法,能更有效地模拟真实用户行为,提高测试覆盖率,助力性能瓶颈的发现和优化。
|
Python
【已解决】ModuleNotFoundError: No module named ‘DBUtils‘,from DBUtils.PooledDB import PooledDB,
【已解决】ModuleNotFoundError: No module named ‘DBUtils‘,from DBUtils.PooledDB import PooledDB,
1303 0
|
消息中间件 搜索推荐 Java
消息中间件JMS介绍、入门demo与spring整合
消息中间件JMS介绍、入门demo与spring整合
591 83
消息中间件JMS介绍、入门demo与spring整合
|
Java Maven
Maven问题:【不支持源选项5。请使用7或更高版本。】问题解决方案
Maven问题:【不支持源选项5。请使用7或更高版本。】问题解决方案
754 0
|
开发工具 git
idea git和svn间切换
idea git和svn间切换
1394 0
idea git和svn间切换
|
关系型数据库 MySQL 数据库
快速解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is `com.mysql.c
我们当前使用的数据库版本在6.0以上,原来的驱动(com.mysql.jdbc.Driver)已经被废弃了,要进行更换驱动就好了
34751 1
快速解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is `com.mysql.c
|
机器学习/深度学习 Web App开发 人工智能
全球名校AI课程库(8)| Berkeley伯克利 · 全栈深度学习训练营课程『Full Stack Deep Learnin』
课程以实战为主,讲解了不同场景下应用深度学习解决问题的工具、过程和方法:从问题理解,方法选择、数据管理、选择 GPU 到 Web 部署、监控和再训练。
2594 1
全球名校AI课程库(8)| Berkeley伯克利 · 全栈深度学习训练营课程『Full Stack Deep Learnin』
|
Web App开发 Dart 前端开发
Flutter 第一个程序Hello World!
Flutter 第一个程序Hello World!
496 1
Flutter 第一个程序Hello World!