Vue计算属性和侦听器-计算属性-计算属性的 setter

Vue / 568人浏览 / 0人评论

计算属性默认只有 getter,不过在需要时你也可以提供一个 setter

Vue.js 是什么?

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

如果你已经是有经验的前端开发者,想知道 Vue 与其它库/框架有哪些区别,请查看对比其它框架。

Vue计算属性和侦听器-计算属性-计算属性的 setter

以下代码是保存至一个index.html的文档(文件后缀名是.html)中,并非是.vue的文件,当今后学会了一些更vue复杂的应用的时候,比如CLI创建了更复杂的vue应用,并支持单文件组件,那在项目下创建的文件可能就是以.vue为后缀的文件。

计算属性默认只有 getter,不过在需要时你也可以提供一个 setter

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue计算属性和侦听器-计算属性-计算属性的 setter</title>
    <script src="vue.js" type="text/javascript" charset="utf-8"></script>    
</head>
<body>
    <div id="app">
        <h2>计算属性的 setter</h2>
        <!--
        计算属性默认只有 getter,不过在需要时你也可以提供一个 setter:
        -->
        {{ fullName }}
        <!--
        // ...
        computed: {
            fullName: {
                // getter
                get: function () {
                return this.firstName + ' ' + this.lastName
                },
                // setter
                set: function (newValue) {
                var names = newValue.split(' ')
                this.firstName = names[0]
                this.lastName = names[names.length - 1]
                }
            }
        }
        // ...
        -->
        <!--
        现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。
        -->
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#app',            
            data: {
                firstName: 'Foo',
                lastName: 'Bar'
            },
            computed: {
                fullName: {
                    // getter
                    get: function () {
                        return this.firstName + ' ' + this.lastName
                    },
                    // setter
                    set: function (newValue) {
                        var names = newValue.split(' ')
                        this.firstName = names[0]
                        this.lastName = names[names.length - 1]
                    }
                }
            }
        });
      
    </script>
</body>
</html>

转载注明:

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我