인프런 커뮤니티 질문&답변

June0151님의 프로필 이미지

작성한 질문수

Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex

[리팩토링] 할 일 목록 표시 기능

list가 안보여요...

20.06.09 10:07 작성

·

163

1

<App.vue>

<template>
  <div id="app">
    <TodoHeader></TodoHeader>
    <Todoinput v-on:addTodoItem="addOneItem"></Todoinput>
    <TodoList v-bind:propsdata="todoItems" v-on:removeItem="removeOneItem"></TodoList>
    <TodoFooter></TodoFooter>
  </div>
</template>

<script>
import TodoHeader from "./components/TodoHeader.vue";
import TodoFooter from "./components/TodoFooter.vue";
import Todoinput from "./components/Todoinput.vue";
import TodoList from "./components/TodoList.vue";

export default {
  datafunction() {
    return {
      todoItems: []
    };
  },
  methods: {
    addOneItemfunction() {
      var obj = { completed: false, item: this.todoItem };
      localStorage.setItem(this.todoItem, JSON.stringify(obj));
      this.todoItems.push(obj);
    },
    removeOneItemfunction(todoItemindex) {
      localStorage.removeItem(todoItem.item);
      this.todoItems.splice(index, 1);
    }
  },  
  createdfunction() {
    if (localStorage.length > 0) {
      for (var i = 0i < localStorage.lengthi++) {
        if (localStorage.key(i!== "loglevel:webpack-dev-server") {
          this.todoItems.push(
            JSON.parse(localStorage.getItem(localStorage.key(i)))
          );
        }
        // this.todoItems.push(
        //   JSON.parse(localStorage.getItem(localStorage.key(i)))
        // );
      }
    }
  },
  components: {
    TodoHeader: TodoHeader,
    TodoFooter: TodoFooter,
    TodoList: TodoList,
    Todoinput: Todoinput
  }
};
</script>

<style>
body {
  text-aligncenter;
  background-color#f6f6f6;
}
input {
  border-stylegroove;
  width200px;
}
button {
  border-stylegroove;
}
.shadow {
  box-shadow5px 10px 10px rgba(0000.03);
}
</style>

<TodoList.vue>

<template>
  <div>
    <ul>
      <li v-for="(todoItemindex) in propsdata" v-bind:key="todoItem.item" class="shadow">
        <button
          class="checkBtn"
          v-bind:class="{checkBtnCompleted: todoItem.completed}"
          v-on:click="toggleComplete(todoItem)"
        >V</button>
        <span v-bind:class="{textCompleted: todoItem.completed}">{{ todoItem.item }}</span>

        <!-- <span class="removeBtn" v-on:click="removeBtn(todoItem, index)">
                <i class="fas fa-trash-alt"></i> 
        </span>-->
        <button class="removeBtn" v-on:click="removeTodo(todoItemindex)">delete</button>
      </li>
    </ul>
  </div>
</template>

<script scoped>
export default {
  props: ["propsdata"],
  methods: {
    removeTodofunction(todoItemindex) {
      this.$emit("removeItem", todoItem, index);
    },
    toggleCompletefunction(todoItem) {
      todoItem.completed = !todoItem.completed;
      localStorage.removeItem(todoItem.item);
      localStorage.setItem(todoItem.item, JSON.stringify(todoItem));
    }
  }
};
</script>

<style>
ul {
  list-style-typenone;
  padding-left0px;
  margin-top0;
  text-alignleft;
}
li {
  displayflex;
  min-height50px;
  height50px;
  line-height50px;
  margin0.5rem 0;
  padding0 0.9rem;
  backgroundwhite;
  border-radius5px;
}
.removeBtn {
  margin-leftauto;
  color#de4343;
}
.checkBtn {
  line-height45px;
  color#62acde;
  margin-right5px;
}
.checkBtnCompleted {
  text-decorationline-through;
  color#b3adad;
}
.textCompleted {
  text-decorationline-through;
  color#b3adad;
}
</style>

dd

똑같이 따라했고, 다른 분 질문 내용도 확인하고 인덴트도 다 없앴는데도 계속 리스트가 안나오네요.... 삭제도 되고 추가도 되는데 리스트 내용만 안나와서 너무 답답해요... 

에러가 안뜨니 어디가 어떻게 잘못된건지도 잘 모르겠습니다.... 

답변 1

0

장기효(캡틴판교)님의 프로필 이미지

2020. 06. 14. 18:24

안녕하세요 June님, 첨부해주신 코드 상으로는 문제가 없어 보이는데 혹시 아직도 해결이 안되셨을까요? :)

June0151님의 프로필 이미지

작성한 질문수

질문하기