为了账号安全,请及时绑定邮箱和手机立即绑定

  • <div id="cod">

    <input type="text" v-model="inputValue">

    <button @click="handleClick">提交</button>

    <ul>

    <todo-item 

    v-for="(item,index) of list"

    :key="index"

    :content="item"

    :index="index"

    @delete="handleDelete"

    >

    <!-- 父组件通过监听对应事件名称(@delete)触发函数handleDelete。 -->

    </todo-item>

    </ul>

    </div>


    <script type="text/javascript">

    Vue.component('todo-item',{

    //父组件通过prop向子组件传值 子组件获得父组件传来的内容和索引。

    props:['content', 'index'],

    template:'<li @click="handlClick">{{content}}</li>',

    methods:{

    handlClick:function(){

    //子组件通过$emit向父组件抛出触发事件名称(delete)和触发事件的list索引值。

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

    }

    }

    })

    new Vue({

    el:"#cod",

    data:{

    title:"this is hello world!",

    show:true,

    list:[],

    inputValue:''

    },

    methods: {

    handleClick:function(){

    this.list.push(this.inputValue);

    this.inputValue=""

    },

    //函数通过子组件抛出的索引值对应删除list

    handleDelete:function(index){

    this.list.splice(index, 1)

    }


    }

    })

    </script>


    查看全部
  • 每一个组件都是一个vue的实例,

    反之,每一个vue的实例,也都是一个组件


    查看全部

  • <div id="cod">

    <input type="text" v-model="inputValue">

    <button @click="handleClick">提交</button>

    <ul>

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

    </ul>

    </div>


    <script type="text/javascript">

    //定义一个全局组件

    Vue.component('todo-item',{

    //这个组件接收从外部传进来的名叫content的属性

    props:['content'],

    template:'<li>{{content}}</li>'

    })

    //定义一个局部组件

    // var TodoItem = {

    // template:'<li>item</li>'

    // }

    new Vue({

    el:"#cod",

    //在cod实例里注册这个组件

    // components:{

    // 'todo-item': TodoItem

    // },

    data:{

    list:[],

    inputValue:''

    },

    methods: {

    handleClick:function(){

    this.list.push(this.inputValue);

    this.inputValue=""

    }

    }

    })

    </script>


    查看全部
  • <div id="cod">

    //v-model双向绑定

    <input type="text" v-model="inputValue">

    <button @click="handleClick">提交</button>

    <ul>

    //v-for

    <li v-for="(item,index) of list" :key="index">{{item}}</li>

    </ul>

    </div>


    <script type="text/javascript">

    new Vue({

    el:"#cod",

    data:{

    list:[],

    inputValue:''

    },

    methods: {

    //点击提交按钮时,在li里添加input输入框的值后input值设置为空

    handleClick:function(){

    this.list.push(this.inputValue);

    this.inputValue=""

    }


    }

    })

    </script>


    查看全部
  • v-if  会删除dom节点  再创建dom,适合少数的操作

    v-show  给元素添加display属性  适合频繁的操作

    v-for 能把list数组循环展示在li  有多少数据就生成多少li

    适用v-for做循环展示时,需要添加:key="",为了提高渲染效率,要求:每渲染一条的key值都是不同的

    为避免数组内容重复,可转换为如下写法,

    v-for="(item,index) of list" :key="index"

    当然,这也并不是一个特别好的选择,如果需要频繁渲染时,index会出现问题


    查看全部
  • v-if是通过改变dom 的结构显示控制,而v-show是通过diaplay来控制显示隐藏,如果会重复操作,v-show 的性能会好一些

    v-for用于循环,添加key值让渲染数据提高效率

    查看全部
  • computed里面定义计算属性

    watch 用于侦听计算属性发生改变时定义的某项也会随之变化

    查看全部
  • 单向绑定用v-bind:简写:

    双向绑定用v-model

    查看全部
  • v-html 不会进行转义,v-text会进行转义

    v-on指令可以绑定事件比如(click),可简写为@click,方法写在vue实例中的methods方法里面

    查看全部
  • vue只会对它所对应的挂载点内的内容产生作用

    挂载点里的内容称为模版

    模版可以通过template写在vue中,和写在挂载点下面的作用是一样的

    vue实例绑定到挂载点后会自动对模版和数据内容进行处理,生成要最终展示的内容


    查看全部
  • 如何在页面中引入JS文件(在head中引入不会出现闪屏)

    Dom节点如何绑定在vue实例中(通过el就是element)

    查看全部
  • 使用模板指令如v-bind,等号后面的内容就是一个js的表达式,不再是字符串

    查看全部
  • index

    查看全部
  • 4.2 使用vue-cli开发TodoList


    <template>

      <div>

        <div>

          <input v-model="inputValue"/>

          <button @click="handleSubmit">提交</button>

        </div>

        <ul>

          <todo-item v-for="(item,index) of list " 

           :key="index",

           :content="content",

           :index="index",

           @delete="handleDelete"

     

          >

          </todoitem>

        </ul>

      </div>

    </template>


    <script>

    import TodoItem from "./components/TodoItem"

    export default {

      data(){ //这是data:function()的缩写

        return {

          inputValue:'',

          list:[]

        },

      components:[todo-item:"TodoItem"]

      methods:{

        handleSubmit(){

          this.list.push(this.inputValue);

          this.inputValue='' 

        },

        handleDelete(){

            this.list.splice(index,1);

        }

      }

    }



    ----------------------------------------------------------------------------

    在components目录下,新建todotodo-iteim组件的写法

    <template>

      <li @click="handleDelete">{{content}}</li>

    <script>

    export default{

      props:['content,'index']

      template:"<li>{{content}}</li>",

      methods:{

        handleDelete:function(){

          Vue.$emit("delete",this.index)

        }

    }

    </script>


    查看全部
  • <div id="root">

    <div>

    <input  v-model='inputValue" />

    <button @click="handleClick">提交</button>

    </div>

    <ul>

    <todo-iteim v-for="(item,index) of list 

                    :key="index" :content="item" :index="index"

    @delete="handleDelete" //监听子组件的delete事件,调用父组件的handleDelete方法

                    >

    </todo-iteim>

    </ul>

    </div>

    <script>

    Vue.component('todo-item',{

    props:['content','index'],//属性

    template:'<li>{{content}}</li>',

    methods:{

    handleClick:function(){

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

    //跟父组件通信,传播delete事件,传参index

    }

    }

    })


    new Vue({

    el:"#root",

    data:{

    inputValue : '',

    list:[]

    },

    methods:{

    handleClick:function(){

    this.list.push(this.inputValue);

    this.inputValue=''

    },

    handleDelete:function(index){

    this.list.splice(index,1);

    }

    }

    })


    查看全部

举报

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下载
官方微信
友情提示:

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