代码之家  ›  专栏  ›  技术社区  ›  ApplePie

如何将对象正确传递到Vue组件?

  •  0
  • ApplePie  · 技术社区  · 6 年前

    我最近正在学习Vue,我已经阅读了有关Vue的文档 components 是的。但是,我仍然不理解如何将数据对象传递给props并在组件模板中呈现它。

    这是我的Jfiddle link

    或者看看下面的代码。

    Vue.component('greeting', {
      template: `<h1>{{index}}</h1>`,
      props: ['persons']
    });
    
    var vm = new Vue({
      el: '#app',
      data: {
        persons: {
          'Mike': 'Software Developer',
          'Nikita': 'Administrator Assistant'
        }
      }
    });
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    
    <div id="app">
      <greeting v-bind:persons="persons" v-for="(value,key,index) in persons"></greeting>
    </div>
    1 回复  |  直到 6 年前
        1
  •  3
  •   zero298    6 年前

    有几件事:

    • 模板只能访问列出的道具,不能访问父作用域中的内容,这就是为什么 index 不可用
    • 你会束缚 :person="value" 因为这是用当前迭代项填充的变量 persons
    • 添加另一个道具“role”,以便可以绑定 person 反对

    见下文:

    Vue.component('greeting', {
      template: "<h1>{{person}} is a {{role}}</h1>",
      props: ['person', 'role']
    });
    
    var vm = new Vue({
      el: '#app',
      data: {
        persons: {
          'Mike': 'Software Developer',
          'Nikita': 'Administrator Assistant'
        }
      }
    });
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script>
    
    <div id="app">
      <greeting :person="value" :role="key" v-for="(value, key, index) in persons" :key="index"></greeting>
    </div>