2016-08-21 3 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에서 해당에 해당이 무엇

? 일반 자바 스크립트 개체 (function/json 개체)를 만드는 경우 어떻게 그 일반 자바 스크립트 개체에서 계산/관찰 가능한 속성을 만들 수 있습니까?

답변

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)이 유용 할 수 있습니다. 덧붙여서, 계산 된 속성은 표준 자바 스크립트를 사용하여 수행 할 수 있습니다 :'var person = {fn : '', ln : '', fullName() {return this.fn + ''this.ln; }}' –

관련 문제