一、Vue基础

(一)什么是Vue

  1. 可以独立完成前后端分离式web项目的渐进式JavaScript框架

(二)为什么学习Vue

  1. 三大主流框架:Angular、React、Vue
  2. 先进的前端设计模式:MVVM
  3. 可以完全脱离服务器端,以前端代码复用的方式渲染整个页面:组件化开发
  4. 特点:单页面web应用、数据驱动思想、数据的双向绑定、虚拟DOM、组件化开发

(三)如何使用Vue

  1. Vue官网下载vue.js文件
  2. 通过script标签引入
  3. 在Vue实例中通过el进行挂载

二、Vue指令

(一)文本指令

  1. 插值表达式:{{ }},基于html的模板语法
  2. v-next:替换标签内的内容,不会解析html代码
  3. v-html:替换标签的内容,会解析html代码
  4. v-once:被控制的标签只能被赋值一次
  1. <div id="app">
  2. <!--插值表达式-->
  3. <p>{{ msg }}</p>
  4. <!--v-next-->
  5. <p v-next="msg"></p>
  6. <!--v-html-->
  7. <p v-html="msg"></p>
  8. <!--v-once-->
  9. <p v-once>{{ msg }}</p>
  10. </div>
  11. <script>
  12. new Vue({
  13. el:"#app",
  14. data:{},
  15. })
  16. </script>

(二)事件指令v-on

  1. 语法:v-on:事件名='方法变量'
  2. 简写:@事件名='方法变量'
  3. 方法变量不加括号,默认传入事件对象($event)
  4. 方法变量添加括号,代表自定义传参,系统不再传入事件对象,但是可以手动传入
  1. <div id="app">
  2. <p v-on:click="f1">{{ msg }}</p>
  3. <p @click="f1">{{ msg }}</p>
  4. <p @mouseover="f2" @mouseout="f3" @mouseup="f5" @mousemove="f6" @contextmenu="f7">{{ action }}</p>
  5. <hr>
  6. <!-- 事件变量,不添加(),默认会传事件对象: $event -->
  7. <!-- 事件变量,添加(),代表要自定义传参,系统不再传入事件对象,但是可以手动传入事件对象 -->
  8. <p @click="f8($event, '第一个')">{{ info }}</p>
  9. <p @click="f8($event, '第二个')">{{ info }}</p>
  10. </div>
  11. </body>
  12. <script src="js/vue.js"></script>
  13. <script>
  14. new Vue({
  15. el: '#app',
  16. data: {
  17. msg: '点击切换',
  18. action: '鼠标事件',
  19. info: '确定点击者'
  20. },
  21. methods: {
  22. f1 () {
  23. this.msg = '点击了'
  24. },
  25. f2 () {
  26. this.action = '悬浮';
  27. console.log('悬浮')
  28. },
  29. f3 () {
  30. this.action = '离开'
  31. },
  32. f4 () {
  33. this.action = '按下'
  34. },
  35. f5 () {
  36. this.action = '抬起'
  37. },
  38. f6 () {
  39. this.action = '移动';
  40. console.log('移动')
  41. },
  42. f7 () {
  43. this.action = '右键';
  44. },
  45. f8 (ev, argv) {
  46. console.log(ev, argv);
  47. this.info = argv + '点击了';
  48. }
  49. }
  50. })
  51. </script>

(三)属性指令v-bind

  1. 语法:v-bind:属性名='变量'
  2. 简写::属性名='变量'
  • class属性绑定

    1. 直接绑定
    2. []:绑定多个类名
    3. '':引号内的内容为常量
    4. {}:类名状态,控制类名是否生效
  • style属性绑定
    1. 直接绑定:<p :style="myStyle">样式属性</p>
    2. 定制化绑定:`<p :style="{width: w,height: h, backgroundColor: bgc}">样式属性</p>
  • Vue中使用html中css样式中的background-color要变形成驼峰体backgroundColor
  1. <!--绑定全局自定义属性-->
  2. <P v-bind:abc="abc"></P>
  3. <!--直接以原来字符串形式绑定属性,即为一个常量-->
  4. <p v-bind:title=" 'abc' "></p>
  5. <!--单类名绑定-->
  6. <p :class = "c1"></p>
  7. <!--多类名绑定-->
  8. <p :class = "[c2,c3]"></p>
  9. <!--类名状态绑定 var指代可以为一个变量,可以在Vue实例中实时控制其类是否生效-->
  10. <p :class = "{c4:true|false|var}"></p>
  11. <!--样式绑定-->
  12. <div :style:"div_style"></div>
  13. <div :style:"{width:w, height:h, backgroudColor:bc}"></div>
  14. <script src="js/vue.js"></script>
  15. <script>
  16. new Vue({
  17. el:'#app',
  18. c1:'p1',
  19. c2:'p2',
  20. c3:'p3',
  21. div_style:{
  22. width:"100px",
  23. height:"100px",
  24. backgroundColor:"red"
  25. }
  26. w:"100px",
  27. h:"100px",
  28. bc:"red"
  29. })
  30. </script>

(四)表单指令v-model

  1. 语法:v-model="变量",变量值与表单标签的value相关
  2. v-model可以实现数据的双向绑定,绑定的变量值可以影响到表单标签内的值,通过表单标签内的值也会影响绑定的变量值
  3. 单选框时,以name进行分组,绑定的变量存储的是单选框的value值
  4. 单一复选框时,绑定的变量存储的是true|false,或者自定义替换的值
  5. 多复选框,绑定的变量是以数组存储多复选框的内选中的value值
  1. <div id="app">
  2. <!-- v-model针对于表单元素 -->
  3. <form action="" method="get">
  4. <!-- 1、双向绑定:服务于文本输入框 -->
  5. <!-- v-model存储的值为输入框的value值 -->
  6. <div>
  7. <input type="text" name="usr" v-model="in_val">
  8. <input type="password" name="ps" v-model="in_val" >
  9. <textarea name="info" v-model="in_val"></textarea>
  10. </div>
  11. <!-- 2、单选框 -->
  12. <div>
  13. <!-- 单选框是以name进行分组,同组中只能发生单选 -->
  14. <!-- v-model存储的值为单选框的value值 -->
  15. 男:<input type="radio" name="sex" value="男" v-model="ra_val">
  16. 女:<input type="radio" name="sex" value="女" v-model="ra_val">
  17. {{ ra_val }}
  18. </div>
  19. <!-- 3、单一复选框 -->
  20. <!-- v-model存储的值为true|false -->
  21. <!-- 或者为自定义替换的值 -->
  22. <div>
  23. <input type="checkbox" v-model='sin_val' true-value="选中" false-value="未选中" />
  24. {{ sin_val }}
  25. </div>
  26. <!-- 4、多复选框 -->
  27. <!-- v-model存储的值为存储值多复选框value的数组 -->
  28. <div>
  29. <input type="checkbox" value="喜好男的" name="cless" v-model='more_val' />
  30. <input type="checkbox" value="喜好女的" name="cless" v-model='more_val' />
  31. <input type="checkbox" value="不挑" name="cless" v-model='more_val' />
  32. {{ more_val }}
  33. </div>
  34. </form>
  35. </div>
  36. <script type="text/javascript">
  37. new Vue({
  38. el: '#app',
  39. data: {
  40. in_val: '',
  41. // 默认值可以决定单选框默认选项
  42. ra_val: '男',
  43. // 默认值为true,单一复选框为选中,反之false为不选中
  44. sin_val: '',
  45. // 数组中存在的值对应的复选框默认为选中状态
  46. more_val: ['喜好女的','不挑']
  47. }
  48. })
  49. </script>

(五)条件指令v-if

  1. v-show="布尔变量":布尔变量为false时,隐藏该标签,隐藏方式为通过style="display:none"实现,较少使用

  2. v-if="布尔变量":布尔变量为false时,隐藏该标签,隐藏方式为直接不渲染,从数据安全方面,推荐使用

    • v-if="布尔变量"
    • v-else-if="布尔变量"
    • v-else
  1. <div id="app" v-cloak>
  2. <!--条件指令:
  3. v-show="布尔变量" 隐藏时,采用display:none进行渲染
  4. v-if="布尔变量" 隐藏时,不再页面中渲染(保证不渲染的数据泄露)
  5. -----------------------------
  6. v-if | v-else-if | v-else
  7. -->
  8. <div class="box r" v-show="is_show"></div>
  9. <div class="box b" v-if="is_show"></div>
  10. <div class="wrap">
  11. <button @click="page='r_page'" :class="{active: page==='r_page'}"></button>
  12. <button @click="page='b_page'" :class="{active: page==='b_page'}"></button>
  13. <button @click="page='g_page'" :class="{active: page==='g_page'}">绿</button>
  14. <div class="box r" v-if="page === 'r_page'"></div>
  15. <div class="box b" v-else-if="page === 'b_page'">11</div>
  16. <div class="box g" v-else></div>
  17. </div>
  18. </div>
  19. <script src="js/vue.js"></script>
  20. <script>
  21. new Vue({
  22. el: '#app',
  23. data: {
  24. is_show: false,
  25. page: 'r_page'
  26. }
  27. })
  28. </script>
  29. </html>

(六)循环指令v-for

(1)用法

  1. 字符串和列表:v-for="(v,i) in str|arr",v为值,i为索引
  2. 字典:v-for="(v,k,i) in dic",v为值,k为键,i为索引
  1. <div id="app">
  2. <h1>{{ msg }}</h1>
  3. <!-- n为遍历的元素值 -->
  4. <ul>
  5. <li v-for="n in list">{{ n }}</li>
  6. </ul>
  7. <!-- v-for变量数组[]时,接收两个值时,第一个为元素值,第二个为元素索引 -->
  8. <ul>
  9. <li v-for="(n, i) in list" :key="i">value:{{ n }} | index: {{ i }}</li>
  10. </ul>
  11. <!-- v-for变量对象{}时,接收三个值时,第一个为元素值,第二个为元素键,第三个为元素索引 -->
  12. <ul>
  13. <li v-for="(v, k, i) in dic" :key="k">value:{{ v }} | key:{{ k }} | index: {{ i }}</li>
  14. </ul>
  15. <!-- 遍历的嵌套 -->
  16. <div v-for="(person, index) in persons" :key="index" style="height: 21px;">
  17. <div v-for="(v, k) in person" :key="k" style="float: left;">{{ k }} : {{ v }}&nbsp;&nbsp;&nbsp;</div>
  18. </div>
  19. </div>
  20. <script type="text/javascript">
  21. new Vue({
  22. el: "#app",
  23. data: {
  24. msg: "列表渲染",
  25. list: [1, 2, 3, 4, 5],
  26. dic: {
  27. name: 'zero',
  28. age: 88888,
  29. gender: 'god'
  30. },
  31. persons: [
  32. {name: "zero", age: 8},
  33. {name: "egon", age: 78},
  34. {name: "liuXX", age: 77},
  35. {name: "yXX", age: 38}
  36. ]
  37. }
  38. })
  39. </script>

(2)基于循环指令的todolist案例

  • 前端数据库

    1. localStorage:永久存储
    2. sessionSrotage:临时存储(所属页面标签关闭后清空)
    3. 数组等类型传输交互要先序列化成JSON
    4. 清空数据库:localStorage.clear();
    5. 可以把localStorage和sessionStorage当做字典使用
  1. <div id="app">
  2. <input type="text" v-model="comment">
  3. <button type="button" @click="send_msg">留言</button>
  4. <ul>
  5. <li v-for="(msg, i) in msgs" @click="delete_msg(i)">{{ msg }}</li>
  6. </ul>
  7. </div>
  8. <script src="js/vue.js"></script>
  9. <script>
  10. new Vue({
  11. el: '#app',
  12. data: {
  13. comment: '',
  14. msgs: localStorage.msgs ? JSON.parse(localStorage.msgs) : [],
  15. },
  16. methods: {
  17. send_msg() {
  18. // 将comment添加到msgs数组中:unshift push 首尾增 | shift pop 首尾删
  19. // this.msgs.push(this.comment);
  20. // 数组操作最全方法:splice(begin_index, count, ...args)
  21. // this.msgs.splice(0, 2);
  22. if (!this.comment) {
  23. alert('请输入内容');
  24. return false;
  25. }
  26. this.msgs.push(this.comment);
  27. this.comment = '';
  28. localStorage.msgs = JSON.stringify(this.msgs);
  29. },
  30. delete_msg(index) {
  31. this.msgs.splice(index, 1);
  32. localStorage.msgs = JSON.stringify(this.msgs);
  33. }
  34. }
  35. })
  36. // 前台数据库
  37. // localStorage: 永久存储
  38. // sessionStorage:临时存储(所属页面标签被关闭后,清空)
  39. // 存
  40. // localStorage.n1 = 10;
  41. // sessionStorage.n2 = 20;
  42. // 取
  43. // console.log(localStorage.n1);
  44. // console.log(sessionStorage.n2);
  45. // 数组等类型需要先序列化成JSON
  46. // localStorage.arr = JSON.stringify([1, 2, 3]);
  47. // console.log(JSON.parse(localStorage.arr));
  48. // 清空数据库
  49. // localStorage.clear();
  50. </script>

(七)斗篷指令v-cloak

  1. vue引入放在下方时,会因为没有vue环境造成加载时的一瞬间闪烁
  2. 可以把vue引入放在head中解决,但是在网络较差时会有加载不了的问题
  3. 通过添加v-cloak指令,并在style中添加[v-cloak]:{dispaly:none},米面闪烁
  1. <style type="text/css">
  2. [v-cloak] { display: none; }
  3. </style>
  4. <div id="app" v-cloak>
  5. {{ msg }}
  6. </div>
  7. <script src="js/vue.min.js"></script>
  8. <script type="text/javascript">
  9. new Vue({
  10. el: "#app",
  11. data: {
  12. msg: "message"
  13. }
  14. })
  15. </script>
  16. <!-- 避免页面闪烁-->

三、Vue实例成员

  1. 在Vue实例外部或者其他实例中,可以定义一个变量接受该实例
  2. Vue实例中的methods中,this指代vue实例本身
  3. html中-相连的参数或者变量在Vue中要转换成驼峰体,比如background-color要转换成backgroundColor,反之亦然

(一)el:实例

  1. 挂载点:Vue实例和页面标签建立关联
  2. 挂载点采用css3选择器语法,但是只能匹配到第一次检索的结果,因此通常挂载点都采用id选择器(唯一性)
  3. html和body不能作为挂载点
  1. <div id="app">
  2. 代码
  3. </div>
  4. <script>
  5. new Vue({
  6. el:'#app'
  7. })
  8. // 实例与页面挂载点一一对应
  9. // 一个页面中可以出现多个实例对应多个挂载点
  10. // 实例只操作挂载点内部内容
  11. </script>

(二)data:数据

  1. 插件表达式:一种文本指令,支持html模板语法为{{ 变量名 }}
  2. data为插件表达式中的变量提供数据
  3. data中的数据可以通过Vue实例直接或者间接访问
  1. <div id="app">
  2. {{ msg }}
  3. </div>
  4. <script>
  5. var app = new Vue({
  6. el:"#app",
  7. data:{
  8. msg:"数据"
  9. },
  10. })
  11. // 在Vue实例外部或者其他实例中,可以定义一个变量接受该实例
  12. console.log(app.$data.msg)
  13. console.log(app.msg)
  14. </script>

(三)methods:方法

  1. 基于v-on:事件绑定指令
  2. methods为事件提供方法(逻辑处理)
  3. 方法中this指代Vue实例,相当于python中函数的self
  1. <div id="app">
  2. <p v-on:click='pClick'>测试</p>
  3. </div>
  4. <script>
  5. var app = new Vue({
  6. el:'#app',
  7. methods:{
  8. pClick () {
  9. // 点击测试
  10. }
  11. }
  12. })
  13. </script>

(四)computed:计算

  1. 应用于一个变量值依赖多个变量值,比如简单计算器功能(实时输出两个值的和)
  2. 绑定方法中出现的所有变量都会被监听,只要发生变化就会重新出发一次该方法
  3. 方法属性必须要渲染才能生效,渲染的值即为其返回值
  4. computed中声明的参数名,data中不能重复声明
  1. <div id="app">
  2. <input type='text' v-model="a"> <!--v-model为表单指令,相当于value-->
  3. <input type='text' v-model="b">
  4. <div>{{ c }}</div>
  5. </div>
  6. <script>
  7. new Vue({
  8. el:"#app",
  9. data:{
  10. a:'',
  11. b:'',
  12. },
  13. computed:{
  14. c:function(){
  15. return this.a + this .b
  16. }
  17. }
  18. })
  19. </script>

(五)watch:监听

  1. 用于解决多个变量值依赖于一个变量值,比如获取姓名的姓和名
  2. 监听的属性需要在data中声明,监听方法不需要返回值
  3. 监听的方法名就是监听的属性名,该属性值发生改变时就会回调监听方法
  4. 监听方法有两个回调参数:当前值和上一次值
  1. <div id="app">
  2. <input type="text" v-model='fullname'>
  3. <div>
  4. {{ a }}
  5. {{ b }}
  6. </div>
  7. </div>
  8. <script>
  9. new Vue({
  10. el:"#app",
  11. data:{
  12. fullname:'',
  13. surname:'',
  14. name:"",
  15. },
  16. watch:{
  17. fullname:(n,o){ // n是监听的属性当前值,o是其上一次的值
  18. this.surname = this.fullname[0];
  19. this.name = this.fullname[1];
  20. }
  21. }
  22. })
  23. </script>

(六)delemiters:分割符

  1. 可以修改插值表达式符号,避免和Django框架中的{{ }}模板语法冲突
  2. delimiters的值为一个列表:['[{','}]'],即修改为[{ }]
  1. <div id="#app">
  2. ${ msg }
  3. </div>
  4. <script>
  5. new Vue({
  6. el:"#app",
  7. data:{
  8. msg:"message"
  9. },
  10. delimiters:['${','}']
  11. })
  12. </script>

(七)filters:过滤器

  1. 可以对多个值进行过滤,会将值本身和括号内的值一起当做参数传给过滤器方法
  2. 过滤的结果可以再进行过滤(过滤的串联)
  1. <div id="app">
  2. <!--
  3. 总结:
  4. 1、在filters成员中定义过滤器方法
  5. 2、可以对多个值进行过滤,过滤时还可以额外传入辅助参数
  6. 3、过滤的结果可以再进行下一次过滤(过滤的串联)
  7. -->
  8. <p>{{ num | f1 }}</p>
  9. <p>{{ a, b | f2(30, 40) | f3 }}</p>
  10. </div>
  11. <script src="js/vue.js"></script>
  12. <script>
  13. new Vue({
  14. el: '#app',
  15. data: {
  16. num: 10,
  17. a: 10,
  18. b: 20,
  19. },
  20. filters: {
  21. // 传入所有要过滤的条件,返回值就是过滤的结果
  22. f1 (num) {
  23. console.log(num);
  24. return num * 10;
  25. },
  26. f2 (a, b, c, d) {
  27. console.log(a, b, c, d);
  28. return a + b + c + d;
  29. },
  30. f3 (num) {
  31. return num * num;
  32. }
  33. }
  34. })
  35. </script>

四、JS函数补充

(一)构造函数和自定义对象

  1. JS中函数名大写约定俗成为构造函数,等同于python中的类,可以定义自己的属性和方法,并且可以通过new实例化出来一个函数对象
  2. 自定义对象也可以当做一个对象,可以定义自己的属性和方法
  3. 构造函数中的方法和funtion中的this都是指代其实例化出来的对象
  4. 自定义对象中的方法和funtion中的this都是指代对象本身
  1. // 1. 构造函数 == 类
  2. function F2(name) {
  3. this.name = name;
  4. this.eat = function (food) {
  5. console.log(this.name + '在' + food);
  6. }
  7. }
  8. let ff1 = new F2("Bob");
  9. console.log(ff1.name);
  10. let ff2 = new F2("Tom");
  11. console.log(ff2.name);
  12. ff1.eat('饺子');
  13. ff2.eat('sao子面');
  14. // 2. 自定义对象
  15. let obj = {
  16. name: 'Jerry',
  17. eat: function (food) {
  18. console.log(this.name + '在' + food)
  19. },
  20. // eat(food) { // 方法的语法
  21. // console.log(this.name + '在' + food)
  22. // }
  23. };
  24. console.log(obj.name);
  25. obj.eat('hotdog');

(二)变量声明

  1. 不加声明词:全局变量
  2. const:常量,不能重复定义,具备块级作用域
  3. let:在哪里声明就是什么变量,不能重复定义,具备块级作用域
  4. var:全局变量
  1. for (let i = 0; i < 5; i++) {
  2. console.log(i);
  3. }
  4. console.log(i); // undefined
  5. // 使用var和不声明时,此时i为5

(三)箭头函数

  1. 箭头函数可以省略function
  2. 箭头函数没有函数体,只有返回值时,可以省略{}
  3. 箭头函数参数只有一个,可以省略()
  1. // 匿名函数
  2. let f2 = function () {
  3. console.log('f2 run');
  4. };
  5. f2();
  6. // 1. 省略function
  7. let f3 = () => {
  8. console.log('f3 run');
  9. };
  10. f3();
  11. // 2. 如果箭头函数没有函数体,只有返回值
  12. let f4 = (n1, n2) => n1 + n2;
  13. let res = f4(10, 25);
  14. console.log(res);
  15. // 3. 如果箭头函数参数列表只有一个,可以省略()
  16. let f5 = num => num * 10;
  17. res = f5(10);
  18. console.log(res);

(四)箭头函数、function和方法的区别

  1. function和方法中的this指代调用者
  2. 箭头函数中的this指代调用者的上一层
  • 解决

    可以通过声明_this变量提前接收原先指代自定义对象的this

  1. // 自定义对象
  2. let obj = {
  3. name: 'Jerry',
  4. // 1. function中的this指代obj
  5. eat: function (food) {
  6. console.log(this)
  7. console.log(this.name + '在吃' + food)
  8. },
  9. // 2. 箭头函数中的this指代obj的上一层:window事件
  10. eat: food => {
  11. console.log(this);
  12. console.log(this.name + '在' + food)
  13. },
  14. // 3. 方法中的this指代obj
  15. eat(food) { // 方法的语法
  16. console.log(this);
  17. console.log(this.name + '在' + food)
  18. }
  19. };
  20. obj.eat('food');
  21. // Vue实例
  22. new Vue({
  23. data: {
  24. res: ''
  25. },
  26. methods: {
  27. fn () {
  28. // axios插件
  29. let _this = this;
  30. this.$axios({
  31. url: '',
  32. method: 'get',
  33. data: {
  34. },
  35. }).then(function (response) {
  36. _this.res = response.data; // 如果是this,指代的是调用者$axios
  37. })
  38. },
  39. fn1 () {
  40. // axios插件
  41. this.$axios({
  42. url: '',
  43. method: 'get',
  44. data: {
  45. },
  46. }).then(response => {
  47. this.res = response.data; // 指代调用者$axios的上一层vue
  48. })
  49. }
  50. }
  51. })

五、冒泡排序

  1. 逐个比较,根据大小关系交换位置,
  • 公式
  1. // 按照分数进行排名
  2. for (let i=0; i<可迭代对象.length-1; i++) {
  3. for (let j=0; j<可迭代对象.length-1-i; j++) {
  4. // 处理条件即可
  5. if ( a>b ) { // 排序方式
  6. // 交叉赋值,互换位置
  7. a,b = b,a
  8. }
  9. }
  10. }
  • 实例
  1. // 对数组排序
  2. let arr = [3, 2, 5, 4, 1];
  3. for (let i = 0; i < arr.length - 1; i++) { // 外层循环控制趟数
  4. for (let j = 0; j < arr.length - 1 - i; j++) { // 内存循环控制比较次数
  5. if (arr[j] > arr[j + 1]) {
  6. let temp = arr[j];
  7. arr[j] = arr[j + 1];
  8. arr[j + 1] = temp;
  9. }
  10. }
  11. }
  12. // 对字典排序
  13. stus = [
  14. {
  15. name: 'Bob',
  16. grade: 98
  17. },
  18. {
  19. name: 'Tom',
  20. grade: 87
  21. },
  22. {
  23. name: 'Jerry',
  24. grade: 92
  25. },
  26. ];
  27. // 按照分数进行排名
  28. for (let i=0; i<stus.length-1; i++) {
  29. for (let j=0; j<stus.length-1-i; j++) {
  30. // 处理条件即可
  31. if (stus[j].grade > stus[j + 1].grade) {
  32. let temp = stus[j];
  33. stus[j] = stus[j + 1];
  34. stus[j + 1] = temp;
  35. }
  36. }
  37. }

(day65、66)Vue基础、指令、实例成员、JS函数this补充、冒泡排序的更多相关文章

  1. Vue的指令和成员

    目录 Vue的指令和成员 指令 表单 斗篷 条件 循环 成员 计算成员 监听成员 Vue的指令和成员 指令 表单 表单指令一般是和属性指令联合使用的,最常见的就是v-model="变量&qu ...

  2. Vue --- 基础指令

    目录 表单指令 条件指令 循环指令 分隔符(了解) 过滤器 计算属性 监听属性 冒泡排序 表单指令 使用方法: v-model 数据双向绑定 v-model绑定的变量可以影响表单标签的值,反过来表单标 ...

  3. vue指令,实例成员,父子组件传参

    v-once指令 """ v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) """ <di ...

  4. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch

    回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...

  5. vue基础指令了解补充及组件介绍

    v-once指令 """ v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) """ <di ...

  6. vue基础指令了解

    Vue了解 """ vue框架 vue是前台框架:Angular.React.Vue vue:结合其他框架优点.轻量级.中文API.数据驱动.双向绑定.MVVM设计模式. ...

  7. vue自定义指令实例使用(实例说明自定义指令的作用)

    在写vue项目的时候,我们经常需要对后台返回的数据进行大量的渲染操作,其中就包含了大量的对特殊数据的进一步处理,比如说时间戳.图片地址.特殊数据显示等等特殊数据处理改进. 其实遇到这种情况,通过Vue ...

  8. Vue 基础指令学习

    学习Vue的一些总结,第一次写博客,文笔实在是很差 不过我会不断写的. <template> <!--只能有一个根节点 --> <div> <pre> ...

  9. Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

随机推荐

  1. Python文章相关性分析---金庸武侠小说分析-2018.1.16

    最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 输出结果: 比较有意思的巧合是黄蓉使出打狗棒,郭靖就用了降龙十八掌,再后测试了名词的解析. 小说集可以百 ...

  2. 【Web技术】401- 在 React 中使用 Shadow DOM

    本文作者:houfeng 1. Shadow DOM 是什么 Shadow DOM 是什么?我们先来打开 Chrome 的 DevTool,并在 'Settings -> Preferences ...

  3. 各大中间件底层技术-分布式一致性协议 Raft 详解

    前言 正式介绍 Raft 协议之前,我们先来举个职场产研团队的一个例子

  4. 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  5. CCF-CSP题解 201612-4 压缩编码

    \(CSP\)也考\(DP\)的嘛...想了两小时贪心的我在宿舍凌乱... 还是智障+老花啊...这不是一道区间合并裸题嘛...石子合并啊... 再看看这\(3s\)的时限,\(O(n^3)\)都够了 ...

  6. android开发检测用户是否使用了虚拟定位

    在应用开发中,如果有签到打卡之类的功能,你是否会遇到检测用户是否使用了虚拟定位软件来进行打卡?如果有,那么请仔细阅读这篇文章.该文章会带你认识什么是虚拟定位.什么是应用分身,以及如何通过代码来检测用户 ...

  7. python pyenv与 pyenv-virtualenv配置

    1.安装 pyenv 说明:本文的所有安装都严格遵守官方文档,与官方文档完全保持一致. git 地址:https://github.com/pyenv/pyenv 在你的终端中执行如下命令,安全无毒, ...

  8. Litho在美团动态化方案MTFlexbox中的实践

    1. MTFlexbox MTFlexbox是美团内部应用的非常成熟的一种跨平台动态化解决方案,它遵循了CSS3中提出的Flexbox规范来抹平多平台的差异.MTFlexbox适用于重展示.轻交互的业 ...

  9. aspnet boilerplate 随笔二

    项目框架介绍: 1:Application: 在service里面事件具体业务,Dto相当于viewmodel实现了验证 2:Core:实现了数据层Model   3:EntityFrameworkC ...

  10. java对象的实例化过程

    简单类对象的实例化过程 1.在方法区加载类: 2.在栈内存申请空间,声明变量P: 3.在堆内存中开辟空间,分配对象地址: 4.在对象空间中,对对象的属性进行默认初始化,类成员变量显示初始化: 5.构造 ...