首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue2树选择Ajax调用无法加载选项

Vue2树选择Ajax调用无法加载选项
EN

Stack Overflow用户
提问于 2018-02-22 13:56:54
回答 1查看 1.6K关注 0票数 2

我正在尝试使用这个库来获取树https://riophae.github.io/vue-treeselect/#basic-features形式的动态输入元素

我的选项将通过对Laravel后端的ajax调用生成。

我的Vue2组件代码是这样的:

代码语言:javascript
复制
<template lang="html">
  <div>
    <div class="" >
      <treeselect :multiple="true"  :options="options"   :flat="true" :sort-value-by="sortValueBy"  :default-expand-level="1"
      placeholder="Try selecting some options."        v-model="value"   />
      <pre class="result">{{ value }}</pre>
    </div>

</div>
</template>
<script>
import Treeselect from '@riophae/vue-treeselect'

function tests(id) {
  var data = [];
  axios.get('/standards/' + id + '/tests')
    .then(function(response) {
      data: response.data;
    });
  return data;
}

let called = false

export default {
  components: {
    Treeselect,
  },

  data() {
    return {
      value: null,
      options: tests(1)
      sortValueBy: 'ORDER_SELECTED',
    }
  },
  methods: {
    loadRootOptions(callback) {
      axios.get('/standards/1/tests')
        .then(response => rootOptions = response.data);
    },
  },
}
</script>

<style src="@riophae/vue-treeselect/dist/vue-treeselect.min.css"></style>

Laravel后端是这样的

代码语言:javascript
复制
public function tests($id)
    {
        $tests = [['id'=>'a','label'=>'sandeep'],['id'=>'b','label'=>'sandeep']];
        return $tests;
    }

后台的JSON响应是正确的。问题在于使用这个树选择库通过ajax调用动态加载选项。

KIndly帮助我编写正确的代码,因为我刚开始使用Vue。

EN

回答 1

Stack Overflow用户

发布于 2018-11-03 00:17:32

如果你仍然需要帮助,不确定这是否在8个月前就可用。所有这些代码都可以在https://vue-treeselect.js.org/#delayed-loading上找到

代码语言:javascript
复制
  <treeselect
        v-model="value"
        :options="options"
        :load-options="loadOptions"
        :auto-load-root-options="false"
        :multiple="true"
        placeholder="Open the menu..."
    />



 import { LOAD_ROOT_OPTIONS } from '@riophae/vue-treeselect'
 import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'

然后在方法中添加loadOptions

代码语言:javascript
复制
        loadOptions({ action, parentNode, callback }) {

            if (action === LOAD_CHILDREN_OPTIONS) {
                        parentNode.children = [ {
                            id: 'child',
                            label: 'Child option',
                        } ]
                        callback()
            }

            if (action === LOAD_ROOT_OPTIONS) {

                this.options =  [ 'a', 'b', 'c', 'd', 'e' ].map(id => ({
                    id,
                    label: `option-${id}`,
                }));

                callback();
            }
        },
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48920564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档