Vue Day01

var vm = new Vue({
  el: '#app',  //选取数据要挂载的范围 querySelector
  data: {
    message: 'Hello World'
})

{{}}将模型的数据显示在页面上

<!--支持三元表达式-->
{{ message ? message : 'init data' }}

{{*}}首次绑定数据后,不随数据变化(绑定一次)

<!--只绑定一次 视图变化时不再变化-->
{{ *message }}


{{{}}} 将html类型的数据正常绑定到页面上

{{{ message }}} //message :'<h1>Hello</h1>'

在示例创建后加载以前不存在的属性是不会刷新视图的

var mess = {
  name: 'he'
};
var vm = new Vue({
  el: '#app',  
  data: {
    message: 'Hello World'
});
//当前实例vm和mess这个对象只想同意内存空间
vm.message.name = 100;
//在实例创建后挂载以前不存在的属性是不会刷新视图的
mess.age = 100;
// vm.$set  Vue.set
alert(vm.message == mess);//true

$data可以直接更改对象指定

//vm.$data 就是data对应的这个对象
vm.$data = { age: 10};

vm.$el 不能更改绑定数据的元素

vm.$el = document.getElementById('app1');

computed 计算属性

computed:{
  sum: function(){//默认调get方法
  //在vm中所有的this只想的都是当前实例
    return this.message + 10;
  }
  count:{
    get(){
      return this.price*2; 
    },
    set(val){
      this.price = 40;
    }
   }
  }

变量闪烁问题

css代码

/*属性选择器 [属性名]*/
[v-cloak] :display:none;
/*vue加载完该属性会被移除*/

html代码

<div id="app">
    <!-- Vue编译完成之前{{message}}已字符串显示在页面 编译完后才被替换-->
    <!-- v-text 、v-bind 等可以解决单个标签的闪烁问题-->
    {{message}}
    <!-- v-cloak 可以解决多级数据闪烁问题-->
     <div v-cloak>{{message}}</div>
</div>

v-show 与v-if的区别

v-show 操作的是样式 频繁切换
v-if 操作的是DOM

<!-- 多了一个空的div -->
<div v-if='true'>
  <div>hello</div>
</div>
<!-- template 不会被渲染 只有v-if支持template  v-show不支持template-->
<template v-if='true'>
  <div>hello</div>
  <div>world</div>
</template>
<!-- v-else要紧跟在v-if后面 也可以跟在v-show 后面-->
<div v-else>
  i love you
</div>

遍历对象

message: {
  name: 'zq',
  age: 9
}
<template v-for ='val in message'>
  {{$key}} : {{val }}
</template>
//结果:name:aq age:9
<template v-for ='(key , val) in message'>
  {{$index}}{{key}} : {{$key}} : {{val }}<br>
<!--$index 索引 从0开始  $odd $even $first $last-->
</template>
/*结果:
0name:name:aq 
1age:age:9
*/

遍历数组

message: [
  {name: 'zfpx', type: ['backbone']},
  {name: 'zfpx', type: ['jquery','react','angular']},
  {name: 'zfpx', type: ['nodejs','angularjs',vuejs']}
]
<template v-for ='mes in message'>
  {{$index}} : {{mes .name}} : {{mes .type}}<br>
</template>
<template v-for ='(key,value) in message'>
  {{key}} : {{value .name}} : {{value .type}}<br>
</template>

嵌套循环

<template v-for ='(key,value) in message'>
  <template v-for ='(childKey,t) in value.type'>
    {{key}} : {{childKey}} : {{t}}<br>
  </template>
</template>

遍历数组中相同的项 如果没有唯一的键供追踪 尽量使用track-by (如果没有 开发版会给出warn)
message: [
'苹果' ,'苹果', '苹果', '苹果'
]

<template v-for ='(key,value) in message' track-by="$index">
   {{value}}<br>
</template>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,088评论 0 29
  • vue.js是什么 是一套构建用户界面的渐进式框架 vue应用组成 一个 Vue 应用由一个通过new Vue创建...
    多多酱_DuoDuo_阅读 1,046评论 0 2
  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 11,135评论 4 129
  • vue.js官网教程学习笔记和学习摘要 起步 安装 一个简单的方法,直接把一个vue.js引入你的HTML页面中,...
    恰皮阅读 3,417评论 2 22
  • vue.js 从基础到实战 Vue.js 介绍 什么是vue vue一词是法语,同英语中的view。vue.js是...
    记忆的时间差阅读 2,261评论 1 25