为了账号安全,请及时绑定邮箱和手机立即绑定
  • reselect。react 类似computed的库
    查看全部
  • vue节点是如何监听变化的呢?
    查看全部
  • v-if会将元素删除,v-show只会给元素增加隐藏属性

    查看全部
  • 组件:

    <todo-item v-for="(item,index) of list" :key="index" :content="item"></todo-item>

    Vue.component('todo-item',{

        props:['content'],    父子组件传输,props定义内容字段

        template:'<li>{{content}}</li>'  组件内容

    })

    查看全部
  • 每个vue实例都会有一个template模板

    每个vue实例就是一个组件

    查看全部
  • template模板

    Vue.component全局组件

    var todoItem局部组件//需声明

    props:['content']接收从外部传进来的叫content属性

    查看全部
  • <style scoped>//只在本组件有用

    </style>

    <style>//全局有用

    </style>


    查看全部
  • 通知父组件,触发delete自定义事件,传递组件的index值

    this.$emit('delete',this.index)

    父组件监听子组件的delete事件,如果父组件监听到了子组件的事件后,就执行handleDelete这个函数

    查看全部
  • 组件与实例的关系

    每一个组件都是一个vue的实例

    <div id="root">
       <div >
        <input v-model="inputValue"/>
        <button @click="handleClick">提交</button>
       </div>
       <ul>
        <todo-item v-for="(item,index) of list" :key="index" :content="item"></todo-item>
       </ul>
      </div>
      <script>
      //创建todo-item组件(全局组件)
          Vue.component('todo-item',{
           props:['content'],
           template:'<li @click="handleClick">{{content}}<li>',//模板
           methods:{
            handleClick:function(){
             alert('clicked')
            }
           }
          })
      //创建Todoitem组件(局部组件)
    //      var Todoitem={
    //       template:'<li>item<li>'
    //      }
    //  
      
      
       new Vue({
        el:"#root",
        data:{
         inputValue:'',
         list:[]
        },
        methods:{
         handleClick:function(){
          this.list.push(this.inputValue);//list里面添加数据用push方法
          this.inputValue=''
         }
        }
       })
      </script>

    查看全部
  • 一、TodoList中组件的拆分

    ?定义组件

    ?组件和组件之间如何进行通信

    1. 创建全局组件

       Vue.component('todo-item',{
            template:'<li>item<li>'//模板
            })

      代码

      <div id="root">
         <div >
          <input v-model="inputValue"/>
          <button @click="handleClick">提交</button>
         </div>
         <ul>
          <todo-item v-for="(item,index) of list" :key="index" :content="item"></todo-item>
         </ul>
        </div>
        <script>
        //创建todo-item组件(全局组件)
            Vue.component('todo-item',{
             props:['content'],//接收
             template:'<li>{{content}}<li>'//模板
            })
        //创建Todoitem组件(局部组件)
      //      var Todoitem={
      //       template:'<li>item<li>'
      //      }
      //  
        
        
         new Vue({
          el:"#root",
          data:{
           inputValue:'',
           list:[]
          },
          methods:{
           handleClick:function(){
            this.list.push(this.inputValue);//list里面添加数据用push方法
            this.inputValue=''
           }
          }
         })
        </script>

    2. 创建局部组件,需要在Vue实例中通过components做一个组件的声明

      var Todoitem={
             template:'<li>item<li>'
            }

      在Vue中声明

      components:{
           'todo-item':Todoitem
          },

      局部组件,如果你想在其他的Vue实例中使用这个局部组件,那你必须要通过components对这个组件进行注册

      在这个Vue中,如果你想要使用这个Todoitem这个组件,通过todo-item这个标签来使用,当你注册好这个局部组件后,在实例的模板里面使用这个todo-item标签,就可以正确使用这个组件了

      <div id="root">
         <div >
          <input v-model="inputValue"/>
          <button @click="handleClick">提交</button>
         </div>
         <ul>
          <todo-item></todo-item>
         </ul>
        </div>
        <script>
        //创建todo-item组件(全局组件)
      //      Vue.component('todo-item',{
      //       template:'<li>item<li>'//模板
      //      })
        //创建Todoitem组件(局部组件)
            var Todoitem={
             template:'<li>item<li>'
            }
        
        
        
         new Vue({
          el:"#root",
          components:{
           'todo-item':Todoitem
          },
          data:{
           inputValue:'',
           list:[]
          },
          methods:{
           handleClick:function(){
            this.list.push(this.inputValue);//list里面添加数据用push方法
            this.inputValue=''
           }
          }
         })
        </script>

    查看全部
    1. TodoList的完整功能

      <body>
        <div id="root">
         <div >
          <input v-model="inputValue"/>
          <button @click="handleClick">提交</button>
         </div>
         <ul>
          <li v-for="(item,index) of list" :key="index">
          {{item}}
          </li>
         </ul>
        </div>
        <script>
         new Vue({
          el:"#root",
          data:{
           inputValue:'',
           list:[]
          },
          methods:{
           handleClick:function(){
            this.list.push(this.inputValue);//list里面添加数据用push方法
            this.inputValue=''
           }
          }
         })
        </script>

    查看全部
    1. 对div标签进行展示:v-if(一两次显示或隐藏时)和v-show(更好的选择,频率较高时)

      v-if:当对应数据内容是false的时候,它会 把这个标签直接从dom中移除

      v-show:当数据项的值是false的时候,div标签会被隐藏,但不会从dom中被清除,只是把div标签的display属性变为none

    2. v-for:页面循环内容的展示(添加:key=“”属性, 可以提升每一项渲染的效率和性能,每一项key值不能相同)

    3. 循环list数据列表,每一项内容放入item里面,到底时第几项,每一项的下标都会放进index里面(如果对列表进行频繁的变更,将不能使用index)

      <div id="root">
         <div v-if="show">
          hello world
         </div>
         <button @click="handleClick">toggle</button>
         <ul>
          <li v-for="(item,index) of list" :key="index">{{item}}</li>
         </ul>
        </div>
        <script>
         new Vue({
          el:"#root",
          data:{
           show:true,
           list:[1,1,3]
          },
          methods:{
           handleClick:function(){
            this.show=!this.show;
           }
          }
         })
        </script>

    查看全部
    1. 计算属性(computed:):一个属性通过其他属性计算而来(只有它依赖的数据发生变化的时候,它才会重新计算;如果依赖的属性没有发生变化,它会利用以前计算结果的缓存来在页面上做显示)

      <div id="root">
         姓:<input v-model:value="firstName"/>
         名:<input v-model:value="lastName"/>
         <div>{{fullName}}</div>
         <div>{{count}}</div>
        </div>
        <script>
         new Vue({
          el:"#root",
          data:{
           firstName:'',
           lastName:'',
           count:0
          },
          computed:{
           fullName:function(){
            return this.firstName+''+this.lastName
           }
          }
         })
        </script>

    2. 侦听器:监听某一个数据的变化,一旦这个数据发生了变化,就在该侦听器内进行业务逻辑

      <div id="root">
         姓:<input v-model:value="firstName"/>
         名:<input v-model:value="lastName"/>
         <div>{{fullName}}</div>
         <div>{{count}}</div>
        </div>
        <script>
         new Vue({
          el:"#root",
          data:{
           firstName:'',
           lastName:'',
           count:0
          },
          computed:{
           fullName:function(){
            return this.firstName+''+this.lastName
           }
          },
          watch:{
           firstName:function(){
            this.count++
           },
           lastName:function(){
            this.count++
           }
          }
         })
        </script>

      替换:

      watch:{
           fullName:function(){
            this.count++
           }
          }


    查看全部
    1. 当鼠标放在hello world这个div上时,显示title表示的这句话

      <div id="root">
         <div title="this is hello world">hello world</div>
        </div>

    2. 使用v-bind:(可以缩写成:)属性绑定

      <div id="root">
         <div v-bind:title="title">hello world</div>
        </div>
        <script>
         new Vue({
          el:"#root",
          data:{
           title: "this is hello world"
          }
         })
        </script>

    3. 单项绑定:数据决定页面的显示,但是页面无法决定数据的内容

      双向绑定:一个里面数据改变,另一个页面数据也跟着改变【v-model:value】input输入框中添加了什么数据,content中也跟着添加数据

      【:value】只是将content中数据同步到input输入框中,并不能在输入框中数据改变时改变

      <div id="root">
         <div :title="title">hello world</div>
         <input v-model:value="content"/>
         <div>{{content}}</div>
        </div>
        <script>
         new Vue({
          el:"#root",
          data:{
           title: "this is hello world",
           content:"this is content"
          }
         })
        </script>

    查看全部
    1. 挂载点、模板、实例之间的关系

      挂载点指的是Vue实例下中el属性对应的""中的id所对应的dom节点(div)

      模板指的是在挂载点内部的这些内容都称作模板内容

      <div id="root">

      <h1>hello {{msg}}</h1>

      </div>{

      把模板放入Vue实例进行编写,这部分内容为模板内容

      template:'<h1>hello {{msg}}</h1>'}

    查看全部

举报

0/150
提交
取消
课程须知
1、对Javascript基础知识已经掌握。 2、对Es6和webpack有简单了解。
老师告诉你能学到什么?
使用Vue2.0版本实现响应式编程 2、理解Vue编程理念与直接操作Dom的差异 3、Vue常用的基础语法 4、使用Vue编写TodoList功能 5、什么是Vue的组件和实例 6、Vue-cli脚手架工具的使用 7、但文件组件,全局样式与局部样式

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!