为什么我在data里面定义两个数组变量,在computed里面不能访问?

来源:2-8 路由基础

顾文龙

2019-06-30

为什么我在data里面定义两个数组变量,在computed里面不能访问?


我在网上搜了一些文章,看到别人在data里面声明的变量在computed里面是能访问的,我的必须要在计算属性里面定义我要的变量才不会报错,老师可以解答一下吗?

<template>

    <div class="events">

        {{text.split(',').reverse().join('')}}

        <button type="button" name="button" @click="message1">test</button>

        <div id="example-3">

            <button v-on:click="say('hi')">Say hi</button>

            <button v-on:click="say('what')">Say what</button>

        </div>

        <h1>{{OK?'YES':'NO'}}</h1>

        <p>{{book}}</p>

        <div id="app">

            总价:{{prices}}

        </div>

    </div>


</template>


<script>


    export default {

        data:function(){

            return {

                counters:0,

                OK:false,

                book:'<vue.js实战>',

                text:'123,456',

                package1:[

                    {

                        name:'iPhone8',

                        price:8000,

                        count:1

                    },

                    {

                        name:'iPad',

                        price:4399,

                        count:2

                    }


                ],

                package2:[

                    {

                        name:'orange',

                        price:45,

                        count:2

                    },

                    {

                        name:'banana',

                        price:18,

                        count:3

                    },

                    {

                        name:'milk',

                        price:26,

                        count:1

                    }

                ]

            };

        },


        methods:{

            message1:function () {

                alert("我是皮卡丘")

            },

            say: function (message) {

                alert(message)

            }


        },

        computed:{

            prices:function () {

                var prices = 0;

                // var package1 = [

                //     {

                //         name:'iPhone8',

                //         price:8000,

                //         count:1

                //     },

                //     {

                //         name:'iPad',

                //         price:4399,

                //         count:2

                //     }

                // ];

                // var package2 = [

                //     {

                //         name:'orange',

                //         price:45,

                //         count:2

                //     },

                //     {

                //         name:'banana',

                //         price:18,

                //         count:3

                //     },

                //     {

                //         name:'milk',

                //         price:26,

                //         count:1

                //     }

                // ];

                for (var i = 0, len = package1.length; i < len; i++) {

                    prices += this.package1[i].price * this.package1[i].count;

                }

                for(var j = 0;j < package2.length;j++){

                    prices += this.package2[j].price * this.package2[j].count;

                }

                return prices;

            }

        }


    }



</script>


<style>


</style>


写回答

1回答

快乐动起来呀

2019-07-01

理论上是能访问的,你可以打印下,是取不到这个数据呢,还是因为引用的问题导致没改变值?

0
1
顾文龙
我遍历data里面那两个数组的时候,控制台直接报错,说是变量未定义
2019-07-02
共1条回复

Vue全家桶+SSR+Koa2全栈开发美团网

整合大前端8项技术,全面晋级全栈工程师,毕设/面试作品

2445 学习 · 1638 问题

查看课程