Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为Vue Select2包装器组件使用动态AJAX URL_Javascript_Jquery_Vue.js_Vuejs2_Jquery Select2 - Fatal编程技术网

Javascript 为Vue Select2包装器组件使用动态AJAX URL

Javascript 为Vue Select2包装器组件使用动态AJAX URL,javascript,jquery,vue.js,vuejs2,jquery-select2,Javascript,Jquery,Vue.js,Vuejs2,Jquery Select2,我修改了文件 从VueJS文档中删除,以包括AJAX数据源选项。这是我的密码 但是,我希望动态地设置select2组件的ajaxurl属性,最好是这样 <select2 :options="options" v-model="selected" url="dynamic-url-here"> <option disabled value="0">Select one</option> </select2> 选择一个 我该怎么做 将属性添加

我修改了文件 从VueJS文档中删除,以包括AJAX数据源选项。这是我的密码

但是,我希望动态地设置select2组件的
ajax
url
属性,最好是这样

<select2 :options="options" v-model="selected" url="dynamic-url-here">
  <option disabled value="0">Select one</option>
</select2>

选择一个
我该怎么做

  • 将属性添加到组件的
    道具中

    Vue.component('select2', {
        props: ['options', 'value', 'url'],
    
  • 将AJAX选项移动到范围在select2组件之外的变量或该组件的数据元素:

    Vue.component('select2', {
        props: ['options', 'value', 'url'],
        template: '#select2-template',
        data: function() {
          return {
              ajaxOptions: {
                  url: this.url,
                  dataType: 'json',
                  delay: 250,
                  tags: true,
                  data: function(params) {
                      return {
                          term: params.term, // search term
                          page: params.page
                      };
                  },
                  processResults: function(data, params) {
                      params.page = params.page || 1;
                      return {
                          results: data,
                          pagination: {
                              more: (params.page * 30) < data.total_count
                          }
                      };
                  },
                  cache: true
              }
          };
      },
    
  • 添加url的监视程序:

  • 设置属性:

    <select2 :options="options" v-model="selected" :url="url">
    
    
    
    其中
    url
    在应用程序的数据对象中定义

  • 看到一个演示

  • 将属性添加到组件的
    道具中

    Vue.component('select2', {
        props: ['options', 'value', 'url'],
    
  • 将AJAX选项移动到范围在select2组件之外的变量或该组件的数据元素:

    Vue.component('select2', {
        props: ['options', 'value', 'url'],
        template: '#select2-template',
        data: function() {
          return {
              ajaxOptions: {
                  url: this.url,
                  dataType: 'json',
                  delay: 250,
                  tags: true,
                  data: function(params) {
                      return {
                          term: params.term, // search term
                          page: params.page
                      };
                  },
                  processResults: function(data, params) {
                      params.page = params.page || 1;
                      return {
                          results: data,
                          pagination: {
                              more: (params.page * 30) < data.total_count
                          }
                      };
                  },
                  cache: true
              }
          };
      },
    
  • 添加url的监视程序:

  • 设置属性:

    <select2 :options="options" v-model="selected" :url="url">
    
    
    
    其中
    url
    在应用程序的数据对象中定义


  • 查看中的演示。

    我找到了一个临时解决方法,将
    数据url
    属性添加到
    标记中,并使用
    vm.$el.dataset.url,
    在我的组件中获取它。这很好,谢谢。它可以工作,但如何在@SAMOnelaI输入3个字符后调用ajax,通过将
    数据url
    属性添加到
    标记中,并使用
    vm.$el.dataset.url,
    在我的组件中获取它,找到了一个临时解决方法。这很好,谢谢。它可以工作,但是只有在3个字符输入@SAMOnela之后如何调用ajax呢