ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Почему vue выбрасывает warn error, хотя всё работает правильно?

Есть у меня такой компонент.
Это аккордеон с чекбоксами (лишний код я убрал, для краткости)
<script lang='coffee'>
	Vue = require 'vue/dist/vue.js'
	checkordion = Vue.component "checkordion",
		props: ['columns']
		data: ->
			return
				spoilers: [{shown: false}]
				isDataSet: false

		methods: 
			toggleSpoilers: (key) ->
				that = this
				that.spoilers.forEach (spoiler, index) ->
					if index == key
						if spoiler.shown
							spoiler.shown = false
						else
							spoiler.shown = true
					else
						spoiler.shown = false
			setInnerCheckboxes: (type, value) ->
				this.columns.array.forEach (item, index) ->
					if type == item.type
						item.visible = value
		updated: ->
			that = this
			if !this.isDataSet
				Object.keys(this.columns.categories).forEach (key) ->
					spoiler = {shown: false}
					that.spoilers.push spoiler
				that.isDataSet = true
	module.exports = checkordion
</script>
<template>
	<div class='checkordion'>
		<div class='checkordion__section' v-for='(category, key) in columns.categories' :class="{'checkordion__section--opened': spoilers[key].shown}">
			<div class='checkordion__header'>
				<checkbox v-model='category.visible'></checkbox>
				<div class='checkordion__label' @click="toggleSpoilers(key)">{{category.label}}</div>
			</div>
			<div class='checkordion__body'>
				<div class='checkordion__checkbox' v-if='item.type === category.type' v-for='item in columns.array'>
					<checkbox v-model='item.visible' :label='item.value'></checkbox>
				</div>
			</div>
		</div>
	</div>
</template>


Он получает в props объект с двумя массивами - категории чекбоксов, от которых я получаю количество спойлеров аккордеона, и массив объектов чекбоксов.
Открывается и закрывается всё правильно, работает правильно, но при рендере мне вылетает ошибка в :class="{'checkordion__section--opened': spoilers[key].shown}" о том что propetry spoilers[key].shown of undefined... Почему undefined я не особо понимаю.
Написал несколько хуков. mounted - spoilers[0].shown - доступен. created - доступен, updated - доступен, beforeUpdate - доступен. key в шаблоне - доступен.
Почему Vue ругается?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Можно проверку добавить:
{'checkordion__section--opened': spoilers && spoilers[key].shown}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы