Описание
Я пытаюсь воспользоваться keep-alive
функциональностью vue-js 2.3
, поэтому мой AJAX
вызов выполняется только один раз.
Проблема
Во второй раз, когда я пытаюсь открыть компонент popup
, я получаю эту ошибку:
Ошибка в nextTick: TypeError: невозможно прочитать свойство «вставка» неопределенного
TypeError: невозможно прочитать свойство «вставка» из неопределенного
Шаги
Нажмите на кнопку, чтобы отобразить всплывающее окно
Подождите одну секунду
Закрыть всплывающее окно
Нажмите еще раз на кнопку
https://jsfiddle.net/4fwphqhv/
Пример минимальной репродукции
<div id="app">
<button @click="showDialog = true">Show Component PopUp</button>
<keep-alive>
<popup v-if="showDialog" :show-dialog.sync="showDialog"></popup>
</keep-alive>
</div>
<template id="popup">
<el-dialog :visible.sync="show" @visible-change="updateShowDialog">{{asyncData}}</el-dialog>
</template>
Vue.component('popup', {
template: '#popup',
props : ['showDialog'],
data(){
return {
show: this.showDialog,
asyncData: "Loading please wait"
}
},
methods: {
updateShowDialog(isVisible) {
if (isVisible) return false;
this.$emit('update:showDialog', false )
}
},
created:function (){
const _this = this
setTimeout(() => _this.asyncData = 'Async Data was loaded' , 1000)
},
});
var vm = new Vue({
el: '#app',
data: {
showDialog: false,
},
});
Реальный код всплывающего компонента
<template>
<el-dialog title="Order in progress" size="large" :visible.sync="show" @visible-change="updateShowLoadOrder"></el-dialog>
</template>
<script>
let popUpData;
export default {
name: '',
data () {
return {
ordersInProgress: [],
show: this.showLoadOrder
}
},
props: ['showLoadOrder'],
methods: {
updateShowLoadOrder (isVisible) {
if (isVisible) return false;
this.$emit('update:showLoadOrder', false)
}
},
created () {
const _this = this;
if (!popUpData) {
axios.get('api/mtm/apiGetOrdersInProgress').then((response) => {
_this.ordersInProgress = popUpData = response.data;
});
} else {
this.ordersInProgress = popUpData;
}
}
}
</script>
github
, чтобы узнать, смогут ли они ее исправить. А пока я просто не буду ставитьkeep-alive
- person Léo Coco   schedule 31.05.2017popupData
в одном файловом компоненте? Я попытался поместить его вdata
, и у меня все еще есть та же ошибка в моем реальном проекте. - person Léo Coco   schedule 31.05.2017popup
. Я не вижу серьезных различий, которые могли бы объяснить тот факт, что он работает с вашимjsfiddle
, а не с моим проектом. - person Léo Coco   schedule 31.05.2017element-ui
правильно решит проблему. - person Léo Coco   schedule 31.05.2017