Vue-04-实例及选项

一、介绍

一般的,模板内容简比较简单是,使用data选项配合表达式即可。当涉及复杂逻辑时,则需要使用methods、computed、watch等方法。

二、数据选项

data是Vue实例的数据对象。Vue使用递归法将dat的属性转换为getter/setter,从而让data属性能够响应数据变化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--  使用CDN的方式引入Vue.js  -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
    {{message}}
</div>

<script>
    var values={message:'Hello Vue'}
    var vm=new Vue({
        el:'#app',
        data:values
    })
    console.log(vm);
    console.log(vm.$data===values)
    console.log(vm.message);
    console.log(vm.$data.message)
</script>
</body>
</html>

运行结果:

Vue实例创建之后,在控制台输入vm.$data即可访问原始数据对象

 三、属性选项

Vue为组件开发提供了属性(Props),可以使用它为组件注册动态属性,来处理业务之间的差异,使代码可以在相似的应用场景复用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--  使用CDN的方式引入Vue.js  -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <message content="Hello World"></message>
    <message content="Hello 123"></message>
</div>

<script>
    var Message=Vue.extend({
        props:['content'],
        template: '<h1>{{content}}</h1>'
    })
    Vue.component('message',Message)
    var vm=new Vue({
        el:'#app'
    })
</script>
</body>
</html>

运行结果

 四、方法选项

可以通过选项的属性methods对象来定义方法,并且使用v-on指令来监听DOM事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--  使用CDN的方式引入Vue.js  -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!--  可以通过选项属性methods对象来定义方法,并且使用v-on指令来监听DOM事件   -->
    <button v-on:click="test">点我</button>
</div>

<script>

    var vm=new Vue({
        el:'#app',
        methods:{
            // 定义一个test的函数
            test:function (){
                console.log(new Date().toLocaleTimeString())
            }
        }
    })
</script>
</body>
</html>

运行结果

五、计算属性

     在项目开发种,我们展示数据往往需要进行处理。除了模板中绑定表达式或利用过滤器外,Vue还提供计算属性的方法,计算属性使当其以来的属性的值发生变化时,这个属性的值会自动更新,与之相关的DOM部分也会同步更新,从而减轻模板中的业务负担。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--  使用CDN的方式引入Vue.js  -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <table border="1">
        <thead>
        <th>学科</th>
        <th>分数</th>
        </thead>
        <tbody>
        <tr>
            <td>数学</td>
            <td><input type="text" v-model.number="Math"></td>
        </tr>
        <tr>
            <td>英语</td>
            <td><input type="text" v-model.number="English"></td>
        </tr>
        <tr>
            <td>语文</td>
            <td><input type="text" v-model.number="Chinese"></td>
        </tr>
        <tr>
            <td>总分</td>
            <td>{{sum}}</td>
        </tr>
        <tr>
            <td>平均分</td>
            <td>{{average}}</td>
        </tr>
        </tbody>
    </table>
</div>

<script>
    var vm=new Vue({
        el:'#app',
        data:{
            Math:66,
            English:77,
            Chinese:88
        },
        //  计算属性是能把新的数据缓存下来,其他的以来数据没有发生改变时,调用的时缓存数据,提高了程序的性能和数据提取的速度
        //  如果卸载methods种,数据不会缓存下来,每次都会重新计算
        computed:{
            //  一个计算属性的getter
            sum:function (){
            //    this只想vm实例
                return this.Math+ this.English+ this.Chinese;
            },
            average:function (){
                return this.sum/3;
            }
        }
    })
</script>
</body>
</html>

运行结果:

        分数由于用input标签,因此可以首都输入,页面的数据会随之更改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值