computed传递参数

想要从页面传递参数进computed计算属性,方法和methods传递参数不太一样,需要在computed中的函数中return一个function,在这个function中接受传递过来的参数,然后计算返回。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <h2>{{demoData("maple story")}}</h2>
    </div>
</body>
</html>
<script>
    new Vue({
        el:"#app",
        data:{
        },
        methods:{
        },
        computed:{
            demoData(){
                return function(e){
                    return e+"好玩不花钱"
                }
            },
        }
    })
</script>
  • 第12行接收参数,和methods方法接收参数用法一样
  • 24-28行现在属性内return一个函数,然后在这个函数中接收参数,进行拼接操作。

watch监听属性

用来监听某个标签内容发生变化,响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。例如用在网络中的异步请求。

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <div>单价:{{price}}</div>
        <input type="text" v-model="num">
        <h1>总价:{{sumPrice}}</h1>
        <h2>总价:{{sumPrice}}</h2>
        <h3>总价:{{sumPrice}}</h3>

        <h2>{{demoData("maple story")}}</h2>

        <input type="text" v-model="myName">
        <h1>{{myName}}</h1>
    </div>
</body>
</html>
<script>
    new Vue({
        el:"#app",
        data:{
            num:1,
            price:99,
            myName:""
        },
        methods:{
            // totalPrice(){
            //     console.log("函数被调用")
            //     return this.price*this.num
            // }
        },
        computed:{
            demoData(){
                return function(e){
                    return e+"好玩不花钱"
                }
            },
            sumPrice(){
                console.log("函数被调用")
                return this.price*this.num
            }
        },
        watch:{
            myName(val){
                console.log(val)
            }
        }
    })
</script>
  • 第20行输入框绑定myName监听属性
  • 第21行显示myName内容
  • 50-54行,创建监听器myName,监听input输入框中的值发生变化,发生变化时就会打印内容

测试代码:
image.png

最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏