javascript - jquery geocomplete 无法与 vue js 一起使用

标签 javascript jquery modal-dialog vue.js geocode

当我在 Vue 模式中使用 jquery geocomplete 包装表单时,geocomplete 停止工作。我不知道如何修复它,以便在模式处于事件状态时 geocomplete 可以正常工作。

这是一个没有 Vue 或模态的工作示例: https://jsfiddle.net/3gzovugy/68/

这是相同的示例,包含在 vue 站点的示例模式中,不会进行地理编码。有什么建议么? https://jsfiddle.net/3gzovugy/96/

<div id="app">
  <button id="show-modal" @click="showModal = true">Show Modal</button>
  <modal v-if="showModal" @close="showModal = false">
    <div slot="body">
      <form>
        <div class="item">
          <input id="autocomplete" placeholder="Look up your address" type="text">
        </div>
        <div class="item">
          <input class="cat_textbox" id="houseNo" data-geo="street_number" type="text" placeholder="House Number" maxlength="50" />
        </div>
        <div class="item">
          <input class="cat_textbox" id="street" data-geo="route" type="text" placeholder="street" maxlength="50" />
        </div>
        <div class="item">
          <input class="cat_textbox red" id="BillingAddress" data-geo="street_address" type="text" placeholder="Billing Address" maxlength="50" name="BillingAddress" />
        </div>
      </form>
    </div>

  </modal>
</div>


  <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">
                default header
              </slot>
            </div>

            <div class="modal-body">
              <slot name="body">
                default body
              </slot>
            </div>

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

最佳答案

我看到您的 geocomplete 相关代码位于 $(document).ready(function() 中。从 answer 中获得灵感,您可以将代码移至 <为此,您可以尝试使用 lifecycle hooks,因为它非常接近 $(document).ready():

Vue.component('modal', {
  template: '#modal-template',
  mounted () {
    $("#autocomplete").geocomplete({
    details: "form div",
    detailsAttribute: "data-geo",
    types: ["(cities)"],
    componentRestrictions: {
      country: "in"
    }
  });
  }
})

通过这些更改,您的代码开始显示建议:检查 mounted 。您可能需要进行一些其他 UI 更改才能看到顶部的 geocomplete 下拉列表。

关于javascript - jquery geocomplete 无法与 vue js 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41499941/

相关文章:

c# - C#中删除JavaScript创建的本地存储的方法

javascript - 哪个效率更高?重复选择器或更简洁选择器的变量

jquery如何获取粘贴的内容

javascript - 单个 ESC 关闭 jQuery UI 中的所有模式对话框。解决方法?

javascript - 点击时 react 模态动画

javascript - 在 ionic 框架中放大时, ionic 滚动模糊了我的图像

javascript - 为什么我的本地网站没有使用我的 JavaScript 代码的最后一次编辑?

jquery - 复杂的jquery语法我看不懂

javascript - Flask+AJAX+Jquery+JINJA动态更新HTML Table

javascript - Bootstrap Modal 在页面加载时触发,每个用户一次