2016-11-03 236 views
1

我是新上的Vue和Vuex工作取得Vuex状态数据,目前我正在试图道具绑定到我的组件是这样的:通过传递变量

我的HTML看起来像这样:

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

我Vue的情况是这样的:

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

我Vuex店看起来是这样的:

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

在“得到”的方法,我想我的“项目”变量绑定到我的“状态”变量。例如,结果会是这样的:this. $ store.state.active(它将返回'login')。 当我CONSOLE.LOG state.item,我得到“未定义”。解决这个问题的正确方法是什么?或者我应该尝试一种完全不同的方法?

回答

0

这里是你的代码中jsfiddle,这是正确打印店的变量。确保使用适当版本的Vue和Vuex。

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

感谢您抽出时间来回答。这确实是正确的,但我想要控制台日志state.item(项目是传入的变量)。 –

+0

@ c.smits项目不是一个状态变量,它是一个通过变量,你可以做:'的console.log(“产品”,项目)'。对? – Saurabh

+0

正确。我知道state.active将打印'login',state.login将打印'true'并且state.register将打印'false'。但我不想调用这三个,我想调用state.item,其中“item”代表活动,登录或注册。 –