javascript - Vue 组件 props 作为对象的关键

标签 javascript vue.js vuejs2 vue-component

我不知道如何解释这一点,所以这是代码:

组件:

Vue.component( 'dropdown', {
    props: [ 'key', ],
    template: `
    <select>
        <option value="0">Please select</option>
        <option v-for="option in fields[key].options" :value="option.value">
            {{ option.text }}
        </option>
    </select>`,
})

fields只是一个全局对象:

var fields = {
    gender: {
        title: 'Select Gender',
        options: [
            {value: 'male', text:'male'},
            {value: 'female', text:'female'}
        ]
    },
    ...
}

最后在我的 html 中我有:

<dropdown key='gender'></dropdown>

在我尝试替换的组件中fields[ key ].optionsfields[ + "'" + key + "'" + ].options然后我得到option is not defined 。 所以在更改我的组件后

Vue.component( 'dropdown', {
    props: [ 'key', ],
    template: `
    <select>
        <option value="0">Please select</option>
        <option v-for="option in fields[ + '\'' + key + '\'' + ].options" :value="option.value">
            static text instead of option.text for tesing
        </option>
    </select>`,
})

现在渲染的 html 是:<!---->

最佳答案

结果是key被 Vue 或其他地方的某些东西使用,并将其更改为另一个名称,如 somekey问题解决了。

对于那些将来可能需要这个的人,这里是新组件:

Vue.component( 'dropdown', {
    props: [ 'somekey', ],
    template: `
    <select>
        <option value="0">Please select</option>
        <option v-for="option in fields[ somekey ].options" :value="option.value">
            {{ option.text }}
        </option>
    </select>`,
})

当然html中的内容会变成<dropdown somekey='gender'></dropdown>

关于javascript - Vue 组件 props 作为对象的关键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47960956/

相关文章:

vue.js - 将 v-html 渲染为 VUE 组件

javascript - 正在为所有文章加载相同的 disqus 线程

vue.js - v-text-field textarea 默认高度变化?

javascript - 如何从具有键/值对对象的数组中获取值?

javascript - 在将参数传递给去抖函数时限制或去抖 Vue 2 中的异步调用

vue.js - 巴别塔错误 : Cannot find module 'babel-runtime/core-js/json/stringify'

javascript - 如何将 Angular 和 Vue 项目合并在一起?

javascript - 如何在方法函数中调用 vuex 存储中的变量?

javascript - 如何在 TypeScript 中实例化、初始化和填充数组?

javascript - 自动重定向到扫描的链接