• vue快速学习02、基础用法


    vue快速学习02、基础用法

    目录

    vue快速学习02、基础用法

    1、数据双向绑定

    2、数据绑定

    3、钩子函数

    4、created函数用法1

    5、created函数用法2

    6、filters过滤器

    7、v-once与v-text

    8、数据计算

    9、数据绑定

    10、样式控制1

    11、样式控制2

    12、v-if

    14、v-on

    15、watch

    16、v-for

    17、computed

    18、table增加操作

    19、table删除操作

    20、table修改

    21、template

    22、components绑定组件

    23、props传值

    24、components子父组件的使用

    25、slot插槽使用


    1、数据双向绑定

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <!--视图层-->
    11. <div id="app">
    12. <input type="text" v-model="Msg"><br/>
    13. <p>{{Msg}}</p>
    14. </div>
    15. <!--引入vue环境-->
    16. <script src="js/vue.js"></script>
    17. <!--视图模型层-->
    18. <script>
    19. /* Vue的基础使用方法,内部参数格式为json*/
    20. new Vue({
    21. el: "#app",
    22. data: {
    23. Msg: "天使之吻"
    24. }
    25. })
    26. </script>
    27. </body>
    28. </html>

    2、数据绑定

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <fieldset>
    12. <legend>姓名栏</legend>
    13. <p>姓:<input type="text" v-model="xing" /></p>
    14. <p>名:<input type="text" v-model="ming" /></p>
    15. <p>{{xing}}_{{ming}}</p>
    16. </fieldset>
    17. </div>
    18. <script src="js/vue.js"></script>
    19. <script>
    20. new Vue({
    21. el: "#app",
    22. data: {
    23. xing: "",
    24. ming: ""
    25. }
    26. });
    27. </script>
    28. </body>
    29. </html>

    3、钩子函数

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app"></div>
    11. <script src="js/vue.js"></script>
    12. <script>
    13. new Vue({
    14. el: "#app",
    15. data: {
    16. msg: ""
    17. },
    18. created() {
    19. console.log("初始化");
    20. },
    21. mounted() {
    22. console.log("完成初始化");
    23. },
    24. beforeDestroy() {
    25. console.log("销毁前执行,看不到。");
    26. }
    27. });
    28. </script>
    29. </body>
    30. </html>

    4、created函数用法1

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <div id="show">{{ShowText}}</div>
    12. </div>
    13. <script src="js/vue.js"></script>
    14. <script>
    15. new Vue({
    16. el: "#app",
    17. data: {
    18. StrArray: ["北京第三区交通委提醒您",
    19. "道路千万条",
    20. "安全第一条",
    21. "行车不规范",
    22. "亲人两行泪"
    23. ],
    24. index: 0,
    25. ShowText: ""
    26. },
    27. created() {
    28. var _this = this;
    29. _this.ShowText = _this.StrArray[0];
    30. setInterval(() => {
    31. _this.index++;
    32. if (_this.index == _this.StrArray.length) {
    33. _this.index = 0;
    34. }
    35. _this.ShowText = _this.StrArray[_this.index];
    36. }, 2000);
    37. }
    38. });
    39. </script>
    40. </body>
    41. </html>

    5、created函数用法2

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <div>{{ShowTime}}</div>
    12. </div>
    13. <script src="js/vue.js"></script>
    14. <script>
    15. new Vue({
    16. el: "#app",
    17. data: {
    18. ShowTime: "" //Vue里data数据不能给null
    19. },
    20. created() {
    21. //时间的处理
    22. var _this = this;
    23. setInterval(() => {
    24. var str = "当前日期时间是:";
    25. var d = new Date();
    26. var year = d.getFullYear();
    27. var month = (d.getMonth() + 1).toString().padStart(2, '0');
    28. var day = d.getDate().toString().padStart(2, '0');
    29. var hour = d.getHours().toString().padStart(2, '0');
    30. var min = d.getMinutes().toString().padStart(2, '0');
    31. var se = d.getSeconds().toString().padStart(2, '0');
    32. _this.ShowTime = str + year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + se;
    33. }, 1000);
    34. }
    35. });
    36. </script>
    37. </body>
    38. </html>

    6、filters过滤器

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <input type="text" v-model="showText" />
    12. <hr/>
    13. <p>{{showText|filterText}}</p>
    14. </div>
    15. <script src="js/vue.js"></script>
    16. <script>
    17. new Vue({
    18. el: "#app",
    19. data: {
    20. showText: ""
    21. },
    22. filters: {
    23. filterText: function(o) {
    24. var isf = o.indexOf("傻") == -1;
    25. return isf ? o : "*";
    26. }
    27. }
    28. })
    29. </script>
    30. </body>
    31. </html>

    7、v-once与v-text

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script src="js/vue.js"></script>
    9. </head>
    10. <body>
    11. <div id="app">
    12. <span>{{Msg}}</span>
    13. <hr/>
    14. <span v-once>{{Msg}}</span>
    15. <hr/>
    16. <span v-text>{{Msg}}</span>
    17. <hr/>
    18. <input type="text" v-model="Msg" />
    19. </div>
    20. <script>
    21. new Vue({
    22. el: "#app",
    23. data: {
    24. Msg: "我是基础的参数"
    25. }
    26. })
    27. </script>
    28. </body>
    29. </html>

    8、数据计算

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <!-- 视图层 -->
    11. <div id="app">
    12. <fieldset>
    13. <legend>个人薪资计算器</legend>
    14. <p>基本工资:<input type="text" v-model="a1" /></p>
    15. <p>岗位工资:<input type="text" v-model="a2" /></p>
    16. <p>月度奖金:<input type="text" v-model="a3" /></p>
    17. <p>综合补贴:<input type="text" v-model="a4" /></p>
    18. <p>扣款金额:<input type="text" v-model="a5" /></p>
    19. <p>应发工资:¥{{parseFloat(a1)+parseInt(a2)+parseInt(a3)+parseInt(a4)-parseInt(a5)}}元</p>
    20. </fieldset>
    21. </div>
    22. <!-- 引入环境 -->
    23. <script src="js/vue.js"></script>
    24. <!-- 视图模型 -->
    25. <script>
    26. new Vue({
    27. el: "#app",
    28. data: {
    29. a1: 0,
    30. a2: 0,
    31. a3: 0,
    32. a4: 0,
    33. a5: 0
    34. }
    35. })
    36. </script>
    37. </body>
    38. </html>

    9、数据绑定

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <img :src="url" v-bind:style="sty" />
    12. </div>
    13. <script src="js/vue.js"></script>
    14. <script>
    15. new Vue({
    16. el: "#app",
    17. data: {
    18. url: "imgs/1 (10).png",
    19. sty: "width:300px;height:250px;border:5px solid red"
    20. }
    21. })
    22. </script>
    23. </body>
    24. </html>

    10、样式控制1

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <style>
    9. .co {
    10. color: red;
    11. }
    12. .bgc {
    13. background-color: skyblue;
    14. }
    15. .fs {
    16. font-size: 2rem;
    17. }
    18. .bo {
    19. border: 2px solid hotpink;
    20. }
    21. .bor {
    22. border-radius: 50%;
    23. }
    24. .fc {
    25. text-align: center;
    26. }
    27. </style>
    28. </head>
    29. <body>
    30. <div id="app">
    31. <p><input type="checkbox" v-model="state1" />字体颜色</p>
    32. <p><input type="checkbox" v-model="state2" />背景颜色</p>
    33. <p><input type="checkbox" v-model="state3" />文字大小</p>
    34. <p><input type="checkbox" v-model="state4" />添加边框</p>
    35. <p><input type="checkbox" v-model="state5" />圆角边框</p>
    36. <p><input type="checkbox" v-model="state6" />文字居中</p>
    37. <hr/>
    38. <p v-bind:class="{co:state1,bgc:state2,fs:state3,bo:state4,bor:state5,fc:state6}">安杰有一个美丽、大方、端庄、孝心的女朋友</p>
    39. </div>
    40. <script src="js/vue.js"></script>
    41. <script>
    42. new Vue({
    43. el: "#app",
    44. data: {
    45. state1: false,
    46. state2: false,
    47. state3: false,
    48. state4: false,
    49. state5: false,
    50. state6: false
    51. }
    52. })
    53. </script>
    54. </body>
    55. </html>

    11、样式控制2

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <img :src="url" style="width:100%;height:100vh" />
    12. </div>
    13. <script src="js/vue.js"></script>
    14. <script>
    15. new Vue({
    16. el: "#app",
    17. data: {
    18. Imgs: [
    19. "imgs/1 (1).png",
    20. "imgs/1 (2).png",
    21. "imgs/1 (3).png",
    22. "imgs/1 (4).png",
    23. "imgs/1 (5).png",
    24. "imgs/1 (6).png",
    25. "imgs/1 (7).png",
    26. "imgs/1 (8).png",
    27. "imgs/1 (9).png",
    28. "imgs/1 (10).png",
    29. "imgs/1 (11).png",
    30. "imgs/1 (12).png",
    31. "imgs/1 (13).png"
    32. ],
    33. index: 0,
    34. url: ""
    35. },
    36. created() {
    37. //影分身之术
    38. var _this = this;
    39. _this.url = _this.Imgs[0];
    40. //轮播
    41. setInterval(() => {
    42. _this.index++;
    43. if (_this.index == _this.Imgs.length) {
    44. _this.index = 0;
    45. }
    46. //将每次递增或归零的下角标赋值到数组上
    47. _this.url = _this.Imgs[_this.index];
    48. }, 2500);
    49. }
    50. })
    51. </script>
    52. </body>
    53. </html>

    12、v-if

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <input type="checkbox" v-model="isf" />登录/注册<br/>
    12. <button v-on:click="change">切换</button>
    13. <div v-if="isf">
    14. <p>登录</p>
    15. </div>
    16. <div v-else>
    17. <p>注册</p>
    18. </div>
    19. </div>
    20. <script src="js/vue.js"></script>
    21. <script>
    22. new Vue({
    23. el: "#app",
    24. data: {
    25. isf: true
    26. },
    27. methods: {
    28. change: function() {
    29. //bool值相互切换
    30. this.isf = this.isf ? false : true;
    31. }
    32. }
    33. })
    34. </script>
    35. </body>
    36. </html>

    13、v-if、v-else

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <h1 v-on:click="change" style="cursor: pointer">切换</h1>
    12. <hr/>
    13. <div v-if="isf">
    14. <h1>注册</h1>
    15. <p>账号:<input type="text" placeholder="请输入账号"></p>
    16. <p>密码:<input type="password" placeholder="请输入密码"></p>
    17. <p>二次输入密码:<input type="password" placeholder="请输入密码"></p>
    18. <button>注册提交</button>
    19. </div>
    20. <div v-else>
    21. <h1>登录</h1>
    22. <p>账号:<input type="text" placeholder="请输入账号"></p>
    23. <p>密码:<input type="password" placeholder="请输入密码"></p>
    24. <button>登录提交</button>
    25. </div>
    26. </div>
    27. <script src="js/vue.js"></script>
    28. <script>
    29. new Vue({
    30. el: "#app",
    31. data: {
    32. isf: true
    33. },
    34. methods: {
    35. change: function() {
    36. //反向切换bool值方法
    37. this.isf = this.isf ? false : true;
    38. }
    39. }
    40. })
    41. </script>
    42. </body>
    43. </html

    14、v-on

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <h1><span v-on:click="choose(1)">选项卡一</span><span v-on:click="choose(2)">选项卡二</span></h1>
    12. <div v-if="show1">
    13. 某人拥有十个雍容华贵,沉鱼落雁,闭月羞花的姐姐。
    14. </div>
    15. <div v-if="show2">
    16. 某人需要一个善解人意,手下过百将的巾帼红颜。
    17. </div>
    18. </div>
    19. <script src="js/vue.js"></script>
    20. <script>
    21. new Vue({
    22. el: "#app",
    23. data: {
    24. show1: true,
    25. show2: false
    26. },
    27. methods: {
    28. choose: function(o) {
    29. console.log(o);
    30. var _this = this;
    31. if (o == "1") {
    32. _this.show1 = true;
    33. _this.show2 = false;
    34. } else {
    35. _this.show2 = true;
    36. _this.show1 = false;
    37. }
    38. }
    39. }
    40. })
    41. </script>
    42. </body>
    43. </html>

    15、watch

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <div id="app">
    14. <p>用户名:
    15. <input type="text" v-model="userName" placeholder="请输入用户名" />
    16. <span v-if="isf" style="color: red">该用户名规范为6-16字符</span>
    17. </p>
    18. </div>
    19. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    20. <script>
    21. new Vue({
    22. el: "#app",
    23. data: {
    24. userName: "",
    25. isf: false
    26. },
    27. watch: {
    28. userName: function(newWord, oldWord) {
    29. if (newWord.length < 6 || newWord.length > 16) {
    30. this.isf = true;
    31. } else {
    32. this.isf = false;
    33. }
    34. }
    35. }
    36. })
    37. </script>
    38. </body>
    39. </html>

    16、v-for

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <div id="app">
    14. <p v-for="item in list" class="text-center">
    15. <span class="text-info">{{item}}</span>
    16. </p>
    17. </div>
    18. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    19. <script>
    20. new Vue({
    21. el: "#app",
    22. data: {
    23. list: [
    24. "九月九日忆山东兄弟",
    25. "王维",
    26. "独在异乡为异客,",
    27. "每逢佳节倍思亲。",
    28. "遥知兄弟登高处,",
    29. "遍插茱萸少一人。"
    30. ]
    31. }
    32. });
    33. </script>
    34. </body>
    35. </html>

    17、computed

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <!-- 视图层 -->
    14. <div id="app">
    15. <p><input type="text" placeholder="根据姓名搜索" v-model="SelectKey" /></p>
    16. <hr/>
    17. <table class="table table-hover table-border text-center">
    18. <tr class="info">
    19. <td> 编号 </td>
    20. <td> 姓名 </td>
    21. <td> 薪水 </td>
    22. <td> 性别 </td>
    23. <td> 操作 </td>
    24. </tr>
    25. <tr v-for="(item,index) in newlist">
    26. <td>{{item.id}}</td>
    27. <td>{{item.name}}</td>
    28. <td>{{item.price}}</td>
    29. <td>{{item.sex==0?"女":"男"}}</td>
    30. <td><button class="btn btn-success">删除</button></td>
    31. </tr>
    32. </table>
    33. </div>
    34. <!-- 环境 -->
    35. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    36. <!-- 视图模型 -->
    37. <script>
    38. new Vue({
    39. el: "#app",
    40. data: {
    41. list: [{
    42. id: 1,
    43. name: "黄杰",
    44. price: 100,
    45. sex: 1
    46. }, {
    47. id: 2,
    48. name: "李炳钊",
    49. price: 999999,
    50. sex: 1
    51. }, {
    52. id: 3,
    53. name: "张培海",
    54. price: 888888,
    55. sex: 1
    56. }, {
    57. id: 4,
    58. name: "雷静",
    59. price: 50000,
    60. sex: 0
    61. }, {
    62. id: 5,
    63. name: "李春梦",
    64. price: 1000000,
    65. sex: 0
    66. }],
    67. SelectKey: ""
    68. },
    69. computed: {
    70. newlist: function() {
    71. var _this = this; //影分身
    72. return _this.list.filter(function(o) {
    73. return o.name.indexOf(_this.SelectKey) != -1;
    74. });
    75. }
    76. }
    77. })
    78. </script>
    79. </body>
    80. </html>

    18、table增加操作

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <!-- 视图层 -->
    14. <div id="app">
    15. <p>
    16. 编号:<input type="text" placeholder="请输入编号" v-model="id" /> 姓名:
    17. <input type="text" placeholder="请输入姓名" v-model="name" /> 薪水:
    18. <input type="text" placeholder="请输入薪水" v-model="price" /> 性别:
    19. <input type="text" placeholder="请输入性别" v-model="sex" />
    20. <button v-on:click="addInfo" class="btn btn-primary">添加信息</button>
    21. </p>
    22. <hr/>
    23. <p><input type="text" placeholder="请输入搜索内容" v-model="SelectKey" /></p>
    24. <hr/>
    25. <table class="table table-hover table-border text-center">
    26. <tr class="info">
    27. <td> 编号 </td>
    28. <td> 姓名 </td>
    29. <td> 薪水 </td>
    30. <td> 性别 </td>
    31. <td> 操作 </td>
    32. </td>
    33. </tr>
    34. <tr v-for="(item,index) in newlist">
    35. <td>{{item.id}}</td>
    36. <td>{{item.name}}</td>
    37. <td>{{item.price}}</td>
    38. <td>{{item.sex==0?"女":"男"}}</td>
    39. <td><button class="btn btn-success">删除</button></td>
    40. </tr>
    41. </table>
    42. </div>
    43. <!-- 环境 -->
    44. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    45. <!-- 视图模型 -->
    46. <script>
    47. new Vue({
    48. el: "#app",
    49. data: {
    50. list: [{
    51. id: 1,
    52. name: "黄杰",
    53. price: 100,
    54. sex: 1
    55. }, {
    56. id: 2,
    57. name: "李炳钊",
    58. price: 999999,
    59. sex: 1
    60. }, {
    61. id: 3,
    62. name: "张培海",
    63. price: 888888,
    64. sex: 1
    65. }, {
    66. id: 4,
    67. name: "雷静",
    68. price: 50000,
    69. sex: 0
    70. }, {
    71. id: 5,
    72. name: "李春梦",
    73. price: 1000000,
    74. sex: 0
    75. }],
    76. SelectKey: "",
    77. id: 0,
    78. name: "",
    79. price: 0,
    80. sex: 0
    81. },
    82. computed: {
    83. newlist: function() {
    84. var _this = this; //影分身
    85. return _this.list.filter(function(o) {
    86. return o.name.indexOf(_this.SelectKey) != -1;
    87. });
    88. }
    89. },
    90. methods: {
    91. addInfo: function() {
    92. this.list.push({
    93. id: this.id,
    94. name: this.name,
    95. price: this.price,
    96. sex: this.sex
    97. });
    98. }
    99. }
    100. })
    101. </script>
    102. </body>
    103. </html>

    19、table删除操作

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <!-- 视图层 -->
    14. <div id="app">
    15. <p>
    16. 编号:<input type="text" placeholder="请输入编号" v-model="id" /> 姓名:
    17. <input type="text" placeholder="请输入姓名" v-model="name" /> 薪水:
    18. <input type="text" placeholder="请输入薪水" v-model="price" /> 性别:
    19. <input type="text" placeholder="请输入性别" v-model="sex" />
    20. <button v-on:click="addInfo" class="btn btn-primary">添加信息</button>
    21. </p>
    22. <hr/>
    23. <p><input type="text" placeholder="请输入搜索内容" v-model="SelectKey" /></p>
    24. <hr/>
    25. <table class="table table-hover table-border text-center">
    26. <tr class="info">
    27. <td> 编号 </td>
    28. <td> 姓名 </td>
    29. <td> 薪水 </td>
    30. <td> 性别 </td>
    31. <td> 操作 </td>
    32. </tr>
    33. <tr v-for="(item,index) in newlist">
    34. <td>{{item.id}}</td>
    35. <td>{{item.name}}</td>
    36. <td>{{item.price}}</td>
    37. <td>{{item.sex==0?"女":"男"}}</td>
    38. <td><button class="btn btn-success" v-on:click="del(index)">删除</button></td>
    39. </tr>
    40. </table>
    41. </div>
    42. <!-- 环境 -->
    43. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    44. <!-- 视图模型 -->
    45. <script>
    46. new Vue({
    47. el: "#app",
    48. data: {
    49. list: [{
    50. id: 1,
    51. name: "黄杰",
    52. price: 100,
    53. sex: 1
    54. }, {
    55. id: 2,
    56. name: "李炳钊",
    57. price: 999999,
    58. sex: 1
    59. }, {
    60. id: 3,
    61. name: "张培海",
    62. price: 888888,
    63. sex: 1
    64. }, {
    65. id: 4,
    66. name: "雷静",
    67. price: 50000,
    68. sex: 0
    69. }, {
    70. id: 5,
    71. name: "李春梦",
    72. price: 1000000,
    73. sex: 0
    74. }],
    75. SelectKey: "",
    76. id: 0,
    77. name: "",
    78. price: 0,
    79. sex: 0
    80. },
    81. computed: {
    82. newlist: function() {
    83. var _this = this; //影分身
    84. return _this.list.filter(function(o) {
    85. return o.name.indexOf(_this.SelectKey) != -1;
    86. });
    87. }
    88. },
    89. methods: {
    90. addInfo: function() {
    91. this.list.push({
    92. id: this.id,
    93. name: this.name,
    94. price: this.price,
    95. sex: this.sex
    96. });
    97. },
    98. del: function(o) {
    99. if (confirm('是否删除此行?')) {
    100. this.list.splice(o, 1);
    101. }
    102. }
    103. }
    104. })
    105. </script>
    106. </body>
    107. </html>

    20、table修改

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <!-- 视图层 -->
    14. <div id="app">
    15. <p>
    16. 编号:<input type="text" placeholder="请输入编号" v-model="id" /> 姓名:
    17. <input type="text" placeholder="请输入姓名" v-model="name" /> 薪水:
    18. <input type="text" placeholder="请输入薪水" v-model="price" /> 性别:
    19. <input type="text" placeholder="请输入性别" v-model="sex" />
    20. <button v-on:click="addInfo" class="btn btn-primary">添加信息</button>
    21. <button v-on:click="updateById" class="btn btn-primary">保存修改</button>
    22. </p>
    23. <hr/>
    24. <p><input type="text" placeholder="请输入搜索内容" v-model="SelectKey" /></p>
    25. <hr/>
    26. <table class="table table-hover table-border text-center">
    27. <tr class="info">
    28. <td> 编号 </td>
    29. <td> 姓名 </td>
    30. <td> 薪水 </td>
    31. <td> 性别 </td>
    32. <td> 操作 </td>
    33. </tr>
    34. <tr v-for="(item,index) in newlist">
    35. <td>{{item.id}}</td>
    36. <td>{{item.name}}</td>
    37. <td>{{item.price}}</td>
    38. <td>{{item.sex==0?"女":"男"}}</td>
    39. <td><button class="btn btn-success" v-on:click="del(index)">删除</button>
    40. <button class="btn btn-primary" v-on:click="getInfo(item)">修改</button></td>
    41. </tr>
    42. </table>
    43. </div>
    44. <!-- 环境 -->
    45. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    46. <!-- 视图模型 -->
    47. <script>
    48. new Vue({
    49. el: "#app",
    50. data: {
    51. list: [{
    52. id: 1,
    53. name: "黄杰",
    54. price: 100,
    55. sex: 1
    56. }, {
    57. id: 2,
    58. name: "李炳钊",
    59. price: 999999,
    60. sex: 1
    61. }, {
    62. id: 3,
    63. name: "张培海",
    64. price: 888888,
    65. sex: 1
    66. }, {
    67. id: 4,
    68. name: "雷静",
    69. price: 50000,
    70. sex: 0
    71. }, {
    72. id: 5,
    73. name: "李春梦",
    74. price: 1000000,
    75. sex: 0
    76. }],
    77. SelectKey: "",
    78. id: 0,
    79. name: "",
    80. price: 0,
    81. sex: 0
    82. },
    83. computed: {
    84. newlist: function() {
    85. var _this = this; //影分身
    86. return _this.list.filter(function(o) {
    87. return o.name.indexOf(_this.SelectKey) != -1;
    88. });
    89. }
    90. },
    91. methods: {
    92. addInfo: function() {
    93. this.list.push({
    94. id: this.id,
    95. name: this.name,
    96. price: this.price,
    97. sex: this.sex
    98. });
    99. },
    100. del: function(o) {
    101. if (confirm('是否删除此行?')) {
    102. this.list.splice(o, 1);
    103. }
    104. },
    105. getInfo: function(o) {
    106. this.id = o.id;
    107. this.name = o.name;
    108. this.price = o.price;
    109. this.sex = o.sex;
    110. },
    111. updateById: function() {
    112. for (var index = 0; index < this.list.length; index++) {
    113. var item = this.list[index];
    114. if (item.id == this.id) {
    115. console.log(item.id);
    116. this.list[index].name = this.name;
    117. this.list[index].price = this.price;
    118. this.list[index].sex = this.sex;
    119. return;
    120. }
    121. }
    122. }
    123. }
    124. })
    125. </script>
    126. </body>
    127. </html>

    21、template

    基础声明

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <myheart></myheart>
    12. </div>
    13. <script src="js/vue.js"></script>
    14. <script>
    15. //搭建母版
    16. var myheart_tem = Vue.extend({
    17. template: "<div><h1>My Heart Will Go On</h1><hr/><p>爱无止境·肉丝·杰克</p></div>"
    18. });
    19. //创建组件,第一个参数是自定义组件名称,母版
    20. Vue.component("myheart", myheart_tem);
    21. //创建VUE
    22. new Vue({
    23. el: "#app"
    24. })
    25. </script>
    26. </body>
    27. </html>

    template简单使用 

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <style>
    9. * {
    10. margin: 0px;
    11. padding: 0px;
    12. }
    13. body {
    14. overflow: hidden;
    15. }
    16. .myh {
    17. background: #2E6EC2;
    18. height: 10vh;
    19. color: white;
    20. font-size: 3rem;
    21. line-height: 10vh;
    22. }
    23. .myc {
    24. background-color: #F8F1DC;
    25. text-align: center;
    26. height: 85vh;
    27. font-size: 5rem;
    28. line-height: 85vh;
    29. }
    30. .myf {
    31. background: #2E6EC2;
    32. text-align: center;
    33. height: 5vh;
    34. color: white;
    35. font-size: 2rem;
    36. line-height: 5vh;
    37. }
    38. </style>
    39. </head>
    40. <body>
    41. <div id="app">
    42. <myhead></myhead>
    43. <mycontent></mycontent>
    44. <myfoot></myfoot>
    45. </div>
    46. <!-- 环境 -->
    47. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    48. <script>
    49. //创建母版
    50. var head = Vue.extend({
    51. template: "<div class='myh'>后台管理系统</div>"
    52. });
    53. var content = Vue.extend({
    54. template: "<div class='myc'>后台管理中心内容</div>"
    55. });
    56. var foot = Vue.extend({
    57. template: "<div class='myf'>版权所有:项目开发组</div>"
    58. });
    59. //绑定组件
    60. Vue.component("myhead", head);
    61. Vue.component("mycontent", content);
    62. Vue.component("myfoot", foot);
    63. new Vue({
    64. el: "#app"
    65. })
    66. </script>
    67. </body>
    68. </html>

    22、components绑定组件

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <h1>一堆水果的遍历</h1>
    12. <!-- 需要的自定义的组件 -->
    13. <show-fruit></show-fruit>
    14. </div>
    15. <!-- 模板·在APP的外面 -->
    16. <template id="show">
    17. <div>
    18. <ul>
    19. <li v-for="item in list">{{item}}</li>
    20. </ul>
    21. </div>
    22. </template>
    23. <!-- 环境 -->
    24. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    25. <script>
    26. new Vue({
    27. el: "#app",
    28. components: { //绑定组件
    29. "show-fruit": {
    30. data: function() {
    31. return {
    32. list: ["百香果", "蛇皮果", "姑娘果", "莲雾", "雪莲果"]
    33. }
    34. },
    35. template: "#show"
    36. }
    37. }
    38. })
    39. </script>
    40. </body>
    41. </html>

    23、props传值

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <div id="app">
    14. <h1 align="center">员工信息表</h1>
    15. <!-- 自定义组件名称 -->
    16. <showlist :newlist="list"></showlist>
    17. </div>
    18. <!-- 组件的模板 -->
    19. <template id="show">
    20. <table class="table table-border" style="text-align: center">
    21. <tr class="info">
    22. <td>编号</td>
    23. <td>诗词名称</td>
    24. <td>作者</td>
    25. <td>经典词语</td>
    26. </tr>
    27. <tr v-for="item in newlist">
    28. <td>{{item.id}}</td>
    29. <td>{{item.name}}</td>
    30. <td>{{item.worker}}</td>
    31. <td><pre>{{item.classic}}</pre></td>
    32. </tr>
    33. </table>
    34. </template>
    35. <!-- 环境 -->
    36. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    37. <script>
    38. new Vue({
    39. el: "#app",
    40. data: {
    41. list: [{
    42. id: 1,
    43. name: "《将进酒》",
    44. worker: "李白",
    45. classic: "烹羊宰牛且为乐,会须一饮三百杯!"
    46. }, {
    47. id: 2,
    48. name: "《夏日绝句》",
    49. worker: "李清照",
    50. classic: "生当作人杰,死亦为鬼雄!"
    51. }, {
    52. id: 3,
    53. name: "《长恨歌》",
    54. worker: "白居易",
    55. classic: "回眸一笑百媚生,六宫粉黛无颜色。"
    56. }, {
    57. id: 4,
    58. name: "《锦瑟》",
    59. worker: "李商隐",
    60. classic: "锦瑟无端五十弦,一弦一度思华年!"
    61. }]
    62. },
    63. components: {
    64. "showlist": {
    65. props: ["newlist"],
    66. template: "#show"
    67. }
    68. }
    69. })
    70. </script>
    71. </body>
    72. </html>

    24、components子父组件的使用

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
    9. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    10. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    11. </head>
    12. <body>
    13. <div id="app">
    14. <h1>员工管理系统</h1>
    15. <!-- 父类组件 -->
    16. <fu-temp :showlist="list"></fu-temp>
    17. </div>
    18. <!-- 父类模板 -->
    19. <template id="fu">
    20. <div>
    21. 搜索:<input type="text" v-model="SelectKey" placeholder="请输入搜索内容"/>
    22. <hr/>
    23. <zi-temp :newlist="filterlist"></zi-temp>
    24. </div>
    25. </template>
    26. <!-- 子类模板 -->
    27. <template id="zi">
    28. <div>
    29. <table class="table table-border" style="text-align: center">
    30. <tr class="info">
    31. <td>编号</td>
    32. <td>诗词名称</td>
    33. <td>作者</td>
    34. <td>经典词语</td>
    35. </tr>
    36. <tr v-for="item in newlist">
    37. <td>{{item.id}}</td>
    38. <td>{{item.name}}</td>
    39. <td>{{item.worker}}</td>
    40. <td><pre>{{item.classic}}</pre></td>
    41. </tr>
    42. </table>
    43. </div>
    44. </template>
    45. <!-- 环境 -->
    46. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    47. <script>
    48. new Vue({
    49. el: "#app",
    50. data: {
    51. list: [{
    52. id: 1,
    53. name: "《将进酒》",
    54. worker: "李白",
    55. classic: "烹羊宰牛且为乐,会须一饮三百杯!"
    56. }, {
    57. id: 2,
    58. name: "《夏日绝句》",
    59. worker: "李清照",
    60. classic: "生当作人杰,死亦为鬼雄!"
    61. }, {
    62. id: 3,
    63. name: "《长恨歌》",
    64. worker: "白居易",
    65. classic: "回眸一笑百媚生,六宫粉黛无颜色。"
    66. }, {
    67. id: 4,
    68. name: "《锦瑟》",
    69. worker: "李商隐",
    70. classic: "锦瑟无端五十弦,一弦一度思华年!"
    71. }]
    72. },
    73. components: {
    74. "fu-temp": {
    75. props: ["showlist"],
    76. data: function() {
    77. return {
    78. SelectKey: ""
    79. }
    80. },
    81. template: "#fu",
    82. components: {
    83. "zi-temp": {
    84. props: ["newlist"],
    85. template: "#zi"
    86. }
    87. },
    88. computed: {
    89. filterlist: function() {
    90. var _this = this;
    91. return _this.showlist.filter(function(o) {
    92. return o.classic.indexOf(_this.SelectKey) != -1;
    93. });
    94. }
    95. }
    96. }
    97. }
    98. });
    99. </script>
    100. </body>
    101. </html>

    25、slot插槽使用

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app">
    11. <h1>三好学生遍历</h1>
    12. <!-- 声明自定义组件 -->
    13. <showinfo :newlist="list">
    14. <template slot="cache" slot-scope="props">
    15. <li>{{props.item}}</li>
    16. </template>
    17. </showinfo>
    18. </div>
    19. <template id="show">
    20. <div>
    21. <slot name="cache" v-for="item in newlist" :item="item"></slot>
    22. </div>
    23. </template>
    24. <!-- 环境 -->
    25. <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
    26. <script>
    27. new Vue({
    28. el: "#app",
    29. data: {
    30. list: ["王佳乐", "张雄飞", "宋建飞"]
    31. },
    32. components: {
    33. "showinfo": {
    34. props: ["newlist"],
    35. template: "#show"
    36. }
    37. }
    38. })
    39. </script>
    40. </body>
    41. </html>
  • 相关阅读:
    (3)(3.5) 遥测无线电区域条例
    k8s实践总结
    多版本并发控制MVCC
    matlab习题 —— 符号运算相关练习
    【NLP】第6章 使用 Transformer 进行机器翻译
    项目管理小技能:计划的三个关键动作(对资源的取舍、共识计划、识别风险)
    QT中导出 Qt Tablewidget表格数据导出到 .csv文件
    在Redux Toolkit中使用redux-persist进行状态持久化
    全面解析缓存应用经典问题
    计算机主机名与用户名区别
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/125383250