当我更新值

时间:2018-04-11 19:50:55

标签: javascript vue.js vuejs2

所以我有相当长的vue应用程序,我无法在此粘贴,但我会尽力解释发生了什么。

所以我有一个vue应用程序和3个组件:comp1,comp2和comp3。

comp1 comp2渲染很好,但出于某种原因我尝试渲染comp3时:comp1comp2自行渲染(更新事件)触发器或其他东西)。

comp3仅使用pickedItemscomp1未使用的comp2变量。

我的root vue应用程序的数据属性定义如下:

data: {
    ...
    //Items to pick from in individual mode
    pickedItems: []
    ...
},

然后在我的模板中我做了这样的事情:

<div v-for="(wgt, idx) in cb.widgets" class="cb-wgt"> 
...
    <div class ="wgt">
        <button type="search" class="btn btn-default" v-on:click.prevent="searchForContent(idx)">Search</button>
    </div>
...
</div>

searchForContent的代码如下所示:

searchForContent(idx) {
    var that = this;
    var wgt = that.widgets[idx];

    var s = wgt.search ? wgt.search : "";

    var promise = $.ajax({
        url: '/landings/get_data',
        type: 'GET',
        data: {search: s},
        timeout: 600
    }).done(function(ajaxResponse) {
        //vue.set(that.pickedItems, idx, ajaxResponse.pickedItems);

        that.pickedItems[idx] = ajaxResponse.pickedItems;
        console.log('that.pickedItems', that.pickedItems);
    }).fail(function(response) {
    });
},

但是我设置that.pickedItems[idx]的时刻 - &gt; comp1comp2消失 - 为什么? 我是一个不错的人,花了好几个小时试图解决这个问题,希望有一些指示。

更新1

我认为我的问题与此有关(来自vue docs):

  

由于JavaScript的限制,Vue无法检测到以下内容   对数组的更改:当您使用索引直接设置项目时,   例如vm.items[indexOfItem] = newValue为了克服警告,两者都有   以下内容将完成与vm.items[indexOfItem] = newValue相同的操作,但也会触发反应中的状态更新   系统:

     

// Vue.set Vue.set(vm.items, indexOfItem, newValue)

^反应系统中的状态更新正是我认为我所患的。

0 个答案:

没有答案