2016-08-21 9 views
0

VueJSでknockoutjs ViewModelに相当するものを作成するにはどうすればよいですか?例えば:VueJs観測可能なプロパティを持つオブジェクトを作成する方法

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のものと同等のはどのように私は、テンプレートのプロパティがなく、コンポーネントとして、それを作成することなく、オブジェクトまたはのviewmodelを作成することができます何ですか?私は単純なjavascriptオブジェクト(function/jsonオブジェクト)を作成していますか?そのようなプレーンなjavascriptオブジェクトで計算された/観測可能なプロパティを作成するにはどうすればいいですか?

答えて

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; 
    } 
    } 
}); 
+1

何をhtml要素にバインドされていますか?私はちょうどオブジェクトを持ちたいと思っていますが、私は新しいことができますが、それでもそのプロパティを観察することができます。 –

+0

[この記事](https://github.com/vuejs/vue/issues/2859)によれば、Vueのオブザーバ実装は意図的に隠されています。著者は、状態管理のために[MobX](https://github.com/mobxjs/mobx)を提案しています。 [観察可能な状態に関するセクション](https://github.com/mobxjs/mobx#observable-state)が役に立つかもしれません。 ちなみに、計算されたプロパティは標準のJavaScriptを使って行うことができます: 'var person = {fn: ''、ln: ''、get fullName(){return this.fn + '' + this.ln; }} ' –

関連する問題