一、vue中能提供数据的有:
1、data属性,如:data:{message: ''}中的message;
2、props中的元素,如props: ['title']中的title;
3、v-for中遍历出的元素,如v-for="todo in todos"中的todo;
注意:data和props中的数据在methods和computed中被引用时前面必须添加“this.”,在标签中不需要;同样的,在标签中使用methods和computed中的方法时也不需要添加"this.";
4、插槽slot:
二、根实例向子组件传递数据的方式:
1、props:
2、slot:
三、子组件向根实例传递数据的方式:
子组件的通过$emit('event_name', component_value)传递;
根实例中通过一个方法接收:function(data){......};
四、vue的methods和computed中的方法在{{}}和指令中其后面不添加“()”表示引用;
五、v-for可以循环组件;
六、"{{}}"和"v-html"输出data数据的相同和区别:
相同:data数据属性直接写入即可(htm标签属性如果想绑定data数据需在标签的属性前添加“v-bind”);
区别:如果data数据包含html标签,"v-html"可以将html标签解析,"{{}}"形式不行;
七、data数据的输出位置 :
1、标签中用“{{}}”输出;
2、标签属性中用“v-bind:”输出;
3、标签中直接用“v-html”输出;
4、标签中用“v-for”循环输出;
八、methods、computed、watch:
methods:一般的方法;
computed:对于任何复杂逻辑,你都应当使用计算属性;
watch:当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的;
九、v-for 与 v-if:
当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你想为仅有的一些项渲染节点时,这种优先级的机制会十分有用。
而如果你的目的是有条件地跳过循环的执行,那么可以将 v-if 置于外层元素 (或 <template>)上。
十:组件:
组件是可复用的 Vue 实例,且带有一个名字。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用。
因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。
全局注册的组件可以用在其被注册之后的任何 (通过 new Vue) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中。
$emit:向父级组件触发一个事件;
通过事件向父级组件发送消息的两种方式: