【问题标题】:VueJs How to create object with observable propertiesVueJs 如何创建具有可观察属性的对象
【发布时间】:2016-12-28 03:06:08
【问题描述】:

如何在 VueJS 中创建相当于 knockoutjs ViewModel 的内容?例如:

var Person = function() { 
    var self = this;
    this.firstName = ko.observable('');
    this.lastName = ko.observable('');
    this.fullName = ko.computed(
    function() { 
        return self.firstName() + ' ' self.lastName();
    });

什么是 VueJs 中的等价物,如何在没有模板属性且不将其创建为组件的情况下创建对象或视图模型?如果可以,我是否只创建普通的 javascript 对象(函数/json 对象),如何在这些普通的 javascript 对象中创建计算/可观察的属性?

【问题讨论】:

    标签: javascript knockout.js vue.js vue-component


    【解决方案1】:

    是的,在 Vue 中,模型只是一个 pojo。计算属性是使用其computed 成员建立的。以下是针对您的用例修改的 docs 示例:

    var vm = new Vue({
      el: '#aPerson',
      data: {
        firstName: '',
        lastName: ''
      },
      computed: {
        fullName: function () {
          return this.firstName + ' ' + this.lastName;
        }
      }
    })
    

    接受person 对象的可重用组件如下所示:

    Vue.component('person', {
      props: ['person'],
      computed: {
        fullName () {
          return this.firstName + ' ' + this.lastName;
        }
      }
    });
    

    【讨论】:

    • 不希望模型绑定到 html 元素的情况怎么办?就像我只想拥有一个我可以新建但仍然能够观察它的属性的对象。
    • 根据this post 的说法,Vue 的观察者实现是故意隐藏的。作者建议MobX进行状态管理。您可能会发现section on observable state 很有用。顺便说一句,计算属性可以使用标准 JavaScript 完成:var person = { fn: '', ln: '', get fullName() { return this.fn + ' ' + this.ln; } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2016-10-06
    • 2017-09-07
    相关资源
    最近更新 更多