axios GET 中的 vue.js 多选更改选项

Posted

技术标签:

【中文标题】axios GET 中的 vue.js 多选更改选项【英文标题】:vue.js multi select change options inside axios GET 【发布时间】:2019-07-05 20:37:34 【问题描述】:

您好,我正在使用 this 修改后的包装器来处理 vue.js 的多项选择。我正在尝试更改此内部 vue 组件的值。这是我的代码。

<select2-multiple :options="car_options" v-model="input.classification">
       <option disabled value="0">Select one</option>
</select2-multiple>

这是我的脚本,

Vue.component('select2Multiple', 
  props: ['options', 'value'],
  template: '#select2-template',
  mounted: function () 
    var vm = this
    $(this.$el)
      // init select2
      .select2( data: this.options )
      .val(this.value)
      .trigger('change')
      // emit event on change.
      .on('change', function () 
        vm.$emit('input', $(this).val())
      )
  ,
  watch: 
    value: function (value) 
    alert(value);
       if ([...value].sort().join(",") !== [...$(this.$el).val()].sort().join(","))
        $(this.$el).val(value).trigger('change');
    ,
    options: function (options) 
      // update options
      $(this.$el).select2( data: options )
    
  ,
  destroyed: function () 
    $(this.$el).off().select2('destroy')
  
);

var vm = new Vue(
    el: '#el',
    delimiters: ["[[", "]]"],
    data: 
        input: 
            classification: []
        ,
    ,
    created: function () 
        var vm = this;
        axios.get('http://jsonplaceholder.typicode.com/todos')
                                    .then(function (response) 
                                        $.each(response.data, function (i, item) 
                                            response.data[i].id = String(response.data[i].id);
                                            response.data[i].text = String(response.data[i].title);
                                            vm.car_options.push(response.data[i]);
                                        );
                                        vm.input.classification = ["2"];
                                    )
                                    .catch(function (error) 
                                       console.log(error);
                                    );   
    
);

我需要默认选择 vm.input.classification = ["2"]。而且它不起作用,也没有显示错误消息。我不是 vue 组件方面的专家,但我觉得问题依赖于 vue 组件。

Here 在我的示例中是一个 js fiddle,

【问题讨论】:

这个问题之前回答过,check it out 对不起兄弟默认值不适用于组件。还是谢谢 【参考方案1】:

我终于找到了答案。我们需要交换组件watch的options和value的位置。

watch: 
    options: function (options) 
      // update options
      $(this.$el).select2( data: options )
    ,
    value: function (value) 
       if ([...value].sort().join(",") !== [...$(this.$el).val()].sort().join(","))
        $(this.$el).val(value).trigger('change');
    
  ,

【讨论】:

以上是关于axios GET 中的 vue.js 多选更改选项的主要内容,如果未能解决你的问题,请参考以下文章

Vue Js 在我用 Axios get 调用的函数内部,将传入的数据打印到数组中

vue.js - axios Get方法传参给 .net core webapi。

Vue.js:在axios.get之后使用方法返回图像

Vue.js怎么获取页面json数据啊 求解答(get方式) 尝试后失败了 (vue.js和axios.min.js已引用)?

Vue.js,如何通过 axios 在 api 链接中发送对象?

Axios 获取请求返回 [代理代理] - Flask 和 Vue.js