摘要:与绑定数据绑定一个常见需求是操作元素的列表和它的内联样式。两者只能选其一对象语法我们可以传给一个对象,以动态地切换。注意不支持语法。相比之下,简单得多元素始终被编译并保留,只是简单地基于切换。这意味着将分别重复运行于每个循环中。
vue Class 与 Style 绑定
绑定 HTML Class
对象语法
如下 data:
data: { isActive: true, hasError: false }
渲染为:
data: { classObject: { active: true, "text-danger": false } }
data: { isActive: true, error: null }, computed: { classObject: function () { return { active: this.isActive && !this.error, "text-danger": this.error && this.error.type === "fatal", } } }
数组语法
data: { activeClass: "active", errorClass: "text-danger" }
渲染为:
用在组件上
Vue.component("my-component", { template: "" })
绑定内联样式
对象语法
data: { activeColor: "red", fontSize: 30 }
data: { styleObject: { color: "red", fontSize: "13px" } }
数组语法
自动添加前缀
条件渲染
v-ifv - if (插入 删除节点)
优秀
及格
不及格
hellowroldnice to meet you
if...else结构
if...else if...else结构,if-else用嵌入的方式放进去优秀
不及格
优秀
及格
不及格
用key管理可复用的元素 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。这么做,除了使 Vue 变得非常快之外,还有一些有用的好处。例如,如果你允许用户在不同的登录方式之间切换: 这样也不总是符合实际需求,所以 Vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性即可:hellowroldnice to meet you
在上面的代码中切换 loginType 将不会清除用户已经输入的内容。因为两个模版使用了相同的元素, 不会被替换掉——仅仅是替换了它的的 placeholder Vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性即可:
现在,每次切换时,输入框都将被重新渲染
注意: 元素仍然会被高效地复用,因为它们没有添加 key 属性v-show 另一个用于根据条件展示元素的选项是 v-show 指令。用法大致一样: 不同的是有 v-show 的元素会始终渲染并保持在 DOM 中。v-show 是简单的切换元素的 CSS 属性 display。注意 v-show 不支持 语法。
不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 是简单地切换元素的 CSS 属性 display v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)。相比之下,v-show 简单得多——元素始终被编译并保留,只是简单地基于 CSS 切换。 一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。Hello!
v-if 和 v-for 一起使用 当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你想为仅有的 一些 项渲染节点时,这种优先级的机制会十分有用注意: v-show 不支持 语法,也不支持 v-else
var vm=new Vue({ data:{ items:[ {text:"chifan",isOk:true}, {text:"shuijue",isOk:false}, {text:"kandianshi",isOk:true}, {text:"dayouxi",isOk:true}, {text:"kandianying",isOk:false}, ] } });如果你的目的是有条件地跳过循环的执行,那么可以将 v-if 置于外层元素 (或 )上。
列表渲染
v-for示例 --- 直接上代码:
var example1 = new Vue({ el: "#example-1", data: { items: [ { message: "Foo" }, { message: "Bar" } ] } });
结果:
{% raw %} {{item.message}} {% endraw %}在 v-for 块内我们能完全访问父组件作用域内的属性,另有一个特殊变量 $index,正如你猜到的,它是当前数组元素的索引:
var example2 = new Vue({ el: "#example-2", data: { parentMessage: "Parent", items: [ { message: "Foo" }, { message: "Bar" } ] } })
结果:
{% raw%} {{ parentMessage }} - {{ $index }} - {{ item.message }} {% endraw %}
v-for把对象属性渲染列表{{ index }} {{ item.message }}
{{value}}
也可以提供第二个的参数为键名:
{{key}} is {{value}}
第三个参数为索引:
{{index}}{{key}} is {{value}}
数组的更新检测
变异方法(修改了原始数组):push() 数组末尾添加
pop() 数组末尾取出
shift() 数组开头取出
unshift() 数组开头添加
splice() 删除并插入
sort() 排序
reverse() 数组顺序颠倒
替换数组(返回一个新数组): 数组从一个数组变为另一个数组时(记得,数组是按引用传递的),数据绑定依然生效;但前提是使用以下方法:
对象更新检测 ( 待更新……………… )filter() 过滤,参数是一个函数,取其返回值为true的元素被添加到新数组
concat() 合并两个数组,返回的数组是合并后的
slice() 返回数组的拷贝,从开始索引到结束索引(前含后不含)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/85149.html
摘要:菜鸟教程这是一个属性其值是字符串菜鸟教程同上这是一个属性其值是字符串用于定义的函数,可以通过来返回函数值。它们都有前缀,以便与用户定义的属性区分开来。 开篇语 我最近学习了js,取得进步,现在学习vue.js.建议新手学习,请不要用npm的方式(vue-cli,vue脚手架),太复杂了. 请直接下载vue.js文件本地引入,就上手学习吧参照菜鸟教程网站的vue.js教程http://...
摘要:巅峰人生年老兵思路上的转变,远比单纯提升技术更有价值本文节选自赵成教授在极客时间开设的赵成的运维体系管理课,是其对自己十年技术生涯的回顾与总结。赵成教授来自美丽联合集团,集团旗下两大主力产品是蘑菇街和美丽说,目前负责管理集团的技术服务团队。 showImg(https://segmentfault.com/img/remote/1460000012476504?w=1240&h=826...
阅读 2998·2023-04-25 21:26
阅读 1608·2021-11-25 09:43
阅读 2026·2019-08-30 15:52
阅读 1013·2019-08-30 14:05
阅读 2705·2019-08-29 16:10
阅读 498·2019-08-29 13:48
阅读 1938·2019-08-29 12:47
阅读 1369·2019-08-23 18:04