layui에서table표reload 후 캐시 문제 해결 방법

1545 단어 layui
문제 설명: 부모 창의 테이블에서 데이터 렌더링 방식은 비동기적으로 백엔드를 요청하는 것이 아니라 백엔드에서 데이터를 직접 불러오고 템플릿으로 렌더링할 때 직접 렌더링합니다. 바로 다음 그림의 데이터:table Datas입니다. 아래 그림과 같습니다.
// 
table.render({
    elem: '#mytable',
    text: {
        none: ' '
    },
    data:tableDatas,
    id: 'reloadParentData',
    totalRow:true,// 
    page: false,// 
    limit:Number.MAX_VALUE,
    defaultToolbar: [], // , :['filter', 'print', 'exports']
    done: function(res, curr, count){

    },
    cols: [[ // 
        {field: 'goods_name', title: ' ', width:200,fixed:'left'}
        ,{field: 'goods_number', title: ' ',width:100,fixed:'left'}
    ]]
});

부모 창의 테이블에서 줄마다 데이터를 삭제할 수 있는 삭제 작업이 있습니다. 여기서 부모 창의 모든 줄의 데이터를 삭제합니다.그리고 레이어를 사용합니다.하위 창을 열고 하위 창에서 부모 창의 데이터를 연결합니다. 마지막으로 하위 창에서 부모 창의reload를 다시 불러옵니다. 이 때 문제가 발생했습니다. 부모 창reload 이후 삭제된 데이터가 다시 불러오는 것을 발견했습니다. 즉, 부모 창에table가 있습니다.cache 속성에 저장된 오래된 데이터의 캐시입니다. 우리는console.log 보기.
해결 방법: 이 이유를 알게 돼서 우리 도모는 다른 사람의 해결 방안을 많이 찾았고 다 해 보았지만 아무 소용이 없었어요.그리고 나서 나는 냉정하게 생각해 보았다. 다른 사람들의 방법은 캐시를 어떻게 제거하는가에 따라 간다. 이 방향이 통하지 않는 이상 다른 방법을 찾아 목적을 달성할 수 있을까?답은 분명히 할 수 있다. 해결 방법은 사실 매우 간단하다. 하위 창에서 부모 창의reload를 조작할 때done에 코드 한 줄만 넣으면 문제가 해결된다. 구체적으로는 아래 코드와 같다.
// table 
parent.table.reload('reloadParentData', {
    data: datas,
    done: function(res, curr, count){
        this.data = datas; // , bug
    },
});

주: 데이터는 하위 창에서 연결된 부모 창의 데이터입니다.
한 줄만this.data = datas;문제 해결.

좋은 웹페이지 즐겨찾기