为了账号安全,请及时绑定邮箱和手机立即绑定
  • v-for 循环, 添加 :key 提升渲染效率/性能, 要求每一项循环的key 不一样, 也可用 :key="index", 如果对列表进行频繁的变更, 比如排序时, 使用 index 就不适合了

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


    v-for=“item of list”,v-for表示循环list,依次输出item ,:key可以提升遍历效率,但key 值不能相同;key值相同时,用index做区别

    查看全部
  • v-if 是否存在,通过删除或加载DOM元素来实现显隐。

    v-show 是否显示, 其实就是控制 display: block || none,通过设置DOM的display属性来实现显隐;


    如果一个DOM需要频繁的显隐,那么使用v-show更好,这样效率高。如果是一次性的显隐,那么直接使用v-if即可;

    v-if和v-show】:均用来控制dom显示/隐藏,当值为true则显示,为false则隐藏。

    if 和 show的一大区别:

    在于if是通过销毁dom的方式实现隐藏,而show是通过隐藏dom的方式实现的,具体需要灵活使用。        若只需不频繁切换隐藏显示时用v-if可以,其会使元素从dom中清除,每次切换都得重新渲染,加载。      若需频繁切换时用v-show,它会自动加上display:none,并没有从dom中清除,这样就不用重新渲染,性能好。


    查看全部
  • <!DOCTYPE html>

    <html>

    <head>

    <title>Vue-计算属性和监听器</title>

    <meta charset="utf-8">

    <script type="text/javascript" src="./vue.js"></script>

    </head>

    <body>

    <div id="root">

    姓:<input type="text" name="firstName" v-model="firstName" />

    名:<input type="text" name="lastName" v-model="lastName" />


    <div><h1 >您好!{{firstName}}{{lastName}},欢迎你来到Vue世界!</h1></div>


    <div><h1 >您好!{{fullName}},欢迎你来到Vue世界!</h1></div>


    <div >计数器:{{count}}</div>

    </div>


    <script type="text/javascript">

    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>

    </body>

    </html>


    查看全部
  • <!DOCTYPE html>

    <html>

    <head>

    <title>Vue-计算属性和监听器</title>

    <meta charset="utf-8">

    <script type="text/javascript" src="./vue.js"></script>

    </head>

    <body>

    <div id="root">

    姓:<input type="text" name="firstName" v-model="firstName" />

    名:<input type="text" name="lastName" v-model="lastName" />


    <div><h1 >您好!{{firstName}}{{lastName}},欢迎你来到Vue世界!</h1></div>


    <div><h1 >您好!{{fullName}},欢迎你来到Vue世界!</h1></div>

    </div>


    <script type="text/javascript">

    new Vue({

    el: "#root",   //挂载点

    data: {   //数据

    firstName: '',

    lastName: ''

    },

    computed: {    //计算属性

    fullName : function(){

    return this.firstName + ' ' + this.lastName

    }

    }


    })

    </script>

    </body>

    </html>


    查看全部
  • methods与computed的区别:

    使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

    计算属性:

    computed: {//return  data中的数据发生改变才会触发该方法--返回一个新的结果

        数据名 : function(){

                            return ...

                        }

    }

    侦听器:

    watch:{//data中的数据发生改变时,触发该方法

         data中的数据名 : function(){

                            方法体

                        }

    }

    1. computed:可以对已有的data属性进行计算,返回一个需要的值,并且在data属性值发生变更的时候也会相应的变化

    2. watch:可以对data和computed的任意属性值进行侦听,当侦听到变化的时候,可以执行自定义的任何函数


    查看全部
  • 数据单向绑定:数据决定页面的显示,但是页面无法决定数据里面的内容

    使用v-bind进行单向数据绑定;


    数据双向绑定:数据与页面的显示会同时变化,使用v-model进行双向数据绑定

    查看全部
  • <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8">

    <title>Vue:属性绑定和双向数据绑定</title>

    <script type="text/javascript" src="./vue.js"></script>

    </head>

    <body>

    <div id="root">

    <!-- <div title="This is Hello World">Hello World</div> -->

    <!--

          事件绑定:v-on: 可简写成@


          属性绑定:v-bind: 可简写成:

    -->

    <div v-bind:title="title">Hello World</div>

    </div>


    <script type="text/javascript">

    new Vue({

    el : "#root",

    data : {

                 title: "This is hello world"

    }

    })

    </script>

    </body>

    </html>


    查看全部
  • 事件绑定:v-on: 可简写成@

    属性绑定:v-bind: 可简写成:


    查看全部
  • <!DOCTYPE html>

    <html>

    <head>

    <title>Vue入门</title>

    <script type="text/javascript" src="./vue.js"></script>

    </head>

    <body>

    <!--

    v-text: 会进行转译


    v-html: 不会进行转译


    v-on: 用于绑定事件

    -->

    <div id="root">

    <h1 >{{msg}}--{{number}}</h1>


    <h1 v-text="number"></h1>


    <h1 v-html="number"></h1>


    <div v-text="content"></div>

    <br>

    <div v-html="content"></div>


    <div v-on:click="handleClick">{{msg}}</div>

    </div>



    <script type="text/javascript">

    new Vue({

    el: "#root",

    data: {   /*数据项*/

    msg: "Hello World",

    number: 123,

    content: "<h1 style='color:red;'>Hello World</h1>"

    },

    methods: {

    handleClick : function(){   //事件方法

    this.content="world"

    }


    }

    })


    </script>

    </body>

    </html>


    查看全部
  • v-text: 会进行转译

    v-html: 不会进行转译

    查看全部
  • 【插值表达式】:{{msg}}

    【数据占位符】:{{data}},对应data属性的key;

    【数据模板】:v-text和v-html,对应data属性的key,使用方法同数据占位符,其中:v-text会直接输出html语句,v-html不会将html语句输出;

    【dom模板】:template属性能输出dom模板;

    【绑定事件】:v-on:click="方法名",简写为 @click="方法名"。事件对应methods属性中的 方法名: function(){}。在事件方法中可以用实例中data:{}中的数据,this.数据名。

    【绑定dom属性】:v-bind:property='data',简写为 :property='data' 如 :title='data',data对应为data属性的key;


    查看全部
  • <!DOCTYPE html>

    <html>

    <head>

    <title>Vue入门</title>

    <script type="text/javascript" src="./vue.js"></script>

    </head>

    <body>

    <div id="root">{{msg}}</div>


    <script type="text/javascript">

    /*创建vue实例*/

    new Vue({

    el: "#root",   /*el 绑定dom*/

            data: {        /*数据绑定*/

            msg: "Hello World"

            }

    })

    </script>

    </body>

    </html>


    查看全部
  • <style scoped></style>

    scoped 定义了作用域, 仅对当前局部组件有效

    查看全部
  • template 内只能包含一个根元素

    <template>
        <div>
                <input v-model="inputValue" />
            <todo-item></todo-item>
        </div>
    </template>
    import TodoItem from './components/TodoItem'
    export default {
        components: {  //注册组件
            'todo-item': TodoItem
        }
        data() {  // data 是一个方法
            return {   inputValue: '', list: []   }
        }
    }


    查看全部
  • 如果父组件监听到子组件的事件, 执行 handleDelete

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

    父--->子组件传值是通过属性的方式, 如 :index="index" :cont="cont"

    子--->父组件传值通过发布的方式, this.$emit('delete', this.index)

    子组件内: 

    Vue.component('todo-item', {
        props: ['content', 'index'],
        template: '<li @click="handleClick">{{content}}</li>',
        methods: {
            handleClick: function() {
                this.$emit('delete', this.index)
            }
        }
    })

    父组件内: 

    new Vue({
        methods: {
            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下载
官方微信
友情提示:

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