2016-11-03 4 views
1

Ich bin neu mit Vue und Vuex auf zu arbeiten, und zur Zeit versuche ich Requisiten meine Komponente wie folgt zu binden:Erhalten Vuex Zustandsdaten durch eine variable vorbei

Mein HTML wie folgt aussieht:

<div id="vuemodal"> 
    <modal :active="get('active')" :login="get('login')" :register="get('register')"> 
    </modal> 
</div> 

Meine Vue Beispiel sieht wie folgt aus:

var modal = new Vue({ 
    el: '#vuemodal', 
    store, 
    data: { 
    active: '', 
    login: false, 
    register: false, 
    }, 
    methods: { 
    get: function(item){ 
     var state = this.$store.state; 
     return state.item; 
    } 
} 
}) 

Mein Vuex Geschäft sieht wie folgt aus:

const store = new Vuex.Store({ 
    state: { 
    active: 'login', 
    login: true, 
    register: false 
    } 
}) 

In der "get" -Methode möchte ich meine "Element" -Variable an meine "State" -Variable binden. Das Ergebnis ist beispielsweise: this. $ Store.state.active (und es wird "login" zurückgegeben). Wenn ich console.log state.item, bekomme ich "undefined". Was ist der richtige Weg, um dies zu beheben, oder sollte ich einen komplett anderen Ansatz versuchen?

Antwort

0

Hier ist die von Ihrem Code, Es ist das Drucken der Speichervariablen korrekt. Stellen Sie sicher, dass Sie die richtigen Versionen von Vue und Vuex verwenden.

const store = new Vuex.Store({ 
    state: { 
    active: 'login', 
    login: true, 
    register: false 
    } 
}) 

var modal = new Vue({ 
    el: '#vuemodal', 
    store, 
    data: { 
    active: '', 
    login: false, 
    register: false, 
    }, 
    methods: { 
    get: function(item){ 
     var state = this.$store.state; 
     console.log("state is ", state[item]) 
     return state.item; 
    } 
} 
}) 
+0

Vielen Dank, dass Sie sich die Zeit nehmen zu antworten. Das ist in der Tat richtig, aber ich möchte log state.item (item ist die übergebene Variable) trösten. –

+0

@ c.sits item ist keine Statusvariable, es ist eine übergebene Variable, die Sie einfach tun können: 'console.log (" item is ", item)'. Recht? – Saurabh

+0

Korrekt. Ich weiß, dass state.active 'login' ausgibt, state.login 'true' und 'state.register' 'false'. Aber ich möchte diese drei nicht nennen, ich möchte state.item aufrufen, in dem "item" aktiv ist, login oder registrieren. –

Verwandte Themen