2017-04-10 87 views
1

我找不到如何從另一個變量值創建變量。Vue JavaScript從其他變量值創建變量

我從AJAX調用這個變量(使用vue-resources):

langs: {1:'fr', 2:'en', 3:'ar'}, 

但是,我不知道有多少屬性langs都會有。

我怎樣才能得到這個動態變量:

newVar: { 
    has_lang: '1', 
    values: [{ is: 'fr', val:''}, { is: 'en', val:''}, { is: 'ar', val:''}] 
}, 

所以在newVar,自動使用langs值已產生frenar性能。

我計劃使用values陣列使用V模型綁定到我的md-input輸入值:

<md-input-container v-for="value in newVar.values"> 
    <label>@{{ attribute.attribute }} @{{ value.is }}</label> 
    <md-input v-model="value.val"></md-input> 
</md-input-container> 

是這樣做的操縱最佳做法?因爲我找不到使用v-model作爲從v-for循環生成的輸入的解決方案。

+1

那'values'是不是一個有效的JavaScript性能。這應該是一個數組? – Cerbrus

+0

你能解釋更多的問題嗎? – Codinga

+3

該行:'values:{is:'fr',fr:''},{is:'en',en:''},{is:'ar',ar:''}'無效JavaScript 。那應該是什麼? – Cerbrus

回答

0

每當langs屬性更改時,使用觀察者設置newVar屬性。如果您將langs變量作爲道具傳遞或在data()內定義它,則還需要在mounted生命週期事件中執行此操作。

在你的情況,我想補充的方法,在這兩個點打電話:

data() { 
    return { 
    langs: {1:'fr', 2:'en', 3:'ar'}, 
    newVar: {}, 
    }; 
}, 
methods: { 
    updateValues() { 
    let newVar = { 
     has_lang: (this.langs !== {}) ? '1' : '0', 
     values: [], 
    }; 

    for (let lang in this.langs) { 
     newVar.values.push({ is: this.langs[lang], val: '' }); 
    } 

    this.newVar = newVar; 
    } 
}, 
watch: { 
    langs() { 
    this.updateValues(); 
    } 
}, 
mounted() { 
    this.updateValues(); 
} 

Here's a CodePen.

+0

好像它是我想要的,請稍等片刻我會測試它 – Codinga

+0

我編輯此行值[this.langs [lang]] ='';按值[val] ='';因爲我需要在輸入中使用這個對象,所以我會編輯我的問題,請參閱編輯後的版本以瞭解更多信息。當我在我的html @ {{newVar}} – Codinga

+0

中顯示它們時,我無法獲得我的newVar的val值請你再次檢查我的問題嗎?它已更新 – Codinga