【问题标题】:standalone Vue js: pass data to modal component独立的Vue js:将数据传递给模态组件
【发布时间】:2018-11-09 20:30:25
【问题描述】:

您好,我对使用独立 Vue js 将数据传递给模态组件有疑问。 流程是用户单击“选择国家”按钮并打开模式,用户可以使用滑块选择国家。一旦用户点击确认,模式就会关闭。

我尝试使用 for 循环将数据传递到模态组件,但它也会打印出许多按钮。

感谢您的帮助

我有一个 HTML 代码,用户可以选择一个国家/地区

<div class="select_championship_country" @click="enableCountryModal()">Select a country</div>
<modal v-if="showCountryModal" @close="showModal = false"></modal>

这里是模态组件代码:

 <!-- countury modal -->
        <script type="text/x-template" id="modal-template">
            <transition name="modal">
              <div class="modal-mask">
                <div class="modal-wrapper">
                  <div class="modal-container">
                    <div class="modal-header">
                      <slot name="header">
                        select the country you want to support
                      </slot>
                    </div>

                    <div class="modal-body">
                      <slot name="body">
                        <div class="country_select_carousel">
                          <div class="countrySlide">
                            <!-- <img :src="imgUrl + '/flags/' + item.imgName"> -->
                          </div>
                        </div>
                      </slot>
                    </div>

                    <div class="modal-footer">
                      <slot name="footer">
                        <div class="modal-default-button" @click="$emit('close')">
                          confirm
                        </div>
                      </slot>
                    </div>
                  </div>
                </div>
              </div>
            </transition>
          </script>

这是国家数据数组对象和模态组件

new Vue({
  el: '#root',
  components: {
    modal: {
      template: '#modal-template',
    }
  },
  data: {
    country_carousel_data: [
      {
        imgName: 'brasil.svg',
        desc: 'brasil',
      },
      {
        imgName: 'canada.svg',
        desc: '',
      },
      {
        imgName: 'egypt.svg',
        desc: '',
      },
      {
        imgName: 'france.svg',
        desc: '',
      },
      {
        imgName: 'germany.svg',
        desc: '',
      },
      {
        imgName: 'india.svg',
        desc: '',
      },
      {
        imgName: 'poland.svg',
        desc: '',
      },
      {
        imgName: 'portugal.svg',
        desc: '',
      },
      {
        imgName: 'tunisia.svg',
        desc: '',
      },
      {
        imgName: 'turkey.svg',
        desc: '',
      },
      {
        imgName: 'uk.svg',
        desc: '',
      },
      {
        imgName: 'usa.svg',
        desc: '',
      },
    ],
 }

【问题讨论】:

    标签: vue.js modal-dialog components


    【解决方案1】:

    您在模态模板中的什么地方使用了 for 循环?我没有看到任何 v-for。

    你不应该在 for 循环中。我猜是因为你提到它会打印出你在 for 循环中拥有的许多按钮。 v-for 应该在标签上,如下所示

    <script type="text/x-template" id="modal-template">
                <transition name="modal">
                  <div class="modal-mask">
                    <div class="modal-wrapper">
                      <div class="modal-container">
                        <div class="modal-header">
                          <slot name="header">
                            select the country you want to support
                          </slot>
                        </div>
    
                        <div class="modal-body">
                          <slot name="body">
                            <div class="country_select_carousel">
                              <div class="countrySlide">
    
                               <img v-for="item in country_carousel_data" :src="imgUrl + '/flags/' + item.imgName"> 
                              </div>
                            </div>
                          </slot>
                        </div>
    
                        <div class="modal-footer">
                          <slot name="footer">
                            <div class="modal-default-button" @click="$emit('close')">
                              confirm
                            </div>
                          </slot>
                        </div>
                      </div>
                    </div>
                  </div>
                </transition>
              </script>
    

    【讨论】:

    • 感谢您的回复,我试图在单击时使用 function(item) 传递道具值。这就是为什么它被打印出许多按钮。我找到了如何在通过文档读取道具时传递值的方法。这是我的代码笔link
    猜你喜欢
    • 2016-09-24
    • 2016-02-05
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2020-06-13
    相关资源
    最近更新 更多