此前的Vue.js系列文章:html
Vue.js经常使用开发知识简要入门(一)segmentfault
HTML标签中的属性名不区分大小写。设置prop名字为camelClass形式的时候,须要转换为kebab-case形式(短横线)在HTML中使用。this
Vue.component('child', { //这里能够是camelClass形式 props: ['myMessage'], template: '<span>{{ myMessage }}</span>' }); <!-- 对应在HTML中必须是短横线分隔 --> <child my-message="hello"></child>
这个问题比较绕,也算是一个笔记常犯的一个错误吧,使用字面量语法传递数值:spa
<!-- 传递了一个字符串“1” --> <comp some-prop="1"></comp>
由于他是一个字面prop,它的值是字符串“1”,而不是以实际的数字传递下去。若是想传递一个真实的JavaScript类型的数字,则须要使用动态语法,从而让它的值被当作JavaScript表达式计算。code
<!-- 传递实际的数字 --> <comp :some-prop="1"></comp>
Vue的模板是DOM模板,使用浏览器原生的解析器而不是本身实现一个。相比字符串模板,DOM模板有一些好处,可是也有问题,它必须是有效的HTML片断。一些HTML元素对什么元素能够放在它里面有限制。常见的限制有:component
a不能包行其余的交互元素(如按钮、连接)htm
ul和ol只能直接包含li。ip
select只能包含option和optgroup。
table只能直接包含thead、tbody、ftoot、tr、caption、col、colgroup。
tr只能直接包含th和td。
在实际应用中,这些限制会致使意外的结果。尽管再简单的状况下它可能能够工做,可是咱们不能依赖自定义组件在浏览器验证以前展开结果。例如<my-select><option>....</option></my-select>
不是有效的模板,即便my-select
组件最终展开为<select>...</select>
。
另外一个结果是,自定义标签(包括自定义元素和特殊标签,如<component>
、<template>
、<partial>
)不能用在ul、select、table等对内部元素有限制的标签内。放在这些元素内的自定义标签将被提到元素的外面,于是渲染不正确。
自定义元素应当使用is
特性,如
<table> <tr is="my-component"></tr> </table>
<template>
不能用在<table>
内,这时应该使用<tbody>
,<table>
能够有多个<tbody>
。以下:
<table> <tbody v-for="item in items"> <tr>Even row</tr> <tr>Odd row</tr> </tbody> </table>
在开发业务的时候,常常会出现异步获取数据的状况,有时候数据层次比较深。如:
<span class="airport" v-text="ticketInfo.flight.fromSegments[ticketInfo.flight.fromSegment - 1].depAirportZh"></span>
咱们可使用vm.$set
手动定义一层数据。
vm.$set("depAirportZh" ,ticketInfo.flight.fromSegments[ticketInfo.flight.fromSegments - 1] .depAirportZh)
以下代码:
<div id="example"> a = {{ a }}, b = {{ b }} </div> var vm = new Vue({ el: '#example', data: { a: 1 }, computed: { b: function() { return this.a + 1; } } });
对于上面计算属性b是怎么被使用的?实际上它并无把计算数据放到$data
里,而是经过Object.definePropert(tihs, key, def)
直接定义到了实例上。
《Vue.js权威指南》读书笔记
++++++++++本人出售本人出售《Vue.js权威指南》,二手价20元!++++++++++