전에도 몇번 todolist 등등 여러가지 만들어보기는 했지만 지금와서는 머릿속에 남은게 별로 없다..

이제부터는 블로그에 남겨가면서 천천히 해볼 생각

그나저나 제이쿼리 배우기 너무 지겹다.. 다른것부터 천천히 하자!

 

 

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title>todolist</title>
    
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  </head>
  <body>
    <div class="container">
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>  
  <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <!-- Latest compiled and minified JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</html>

 

시작부터 index를 수정했다. 부트스트랩을 집어넣기 위해서 이렇게 하면 모든 vue컴포넌트에서 부트스트랩이 사용 가능하다고 한다.

Vue에서 index.html 파일을 수정한건 처음이다..

 

App.vue 초기세팅

-webkit 부분은 나도 뭔소린지 잘 모르겠다.. 그냥 일단 따라썻다

부트스트랩이 제대로 작동하는지 테스트해보자
제대로 잘 나온다

 

이제 컴포넌츠 폴더에 새로운 vue 파일을 만들어 줄 차례다

첫글자를 대문자로 적는걸 잊지말자
라우터에 이 부분을 추가해주자 (Example를 불러올 수 있게 하는 구문)
Example.vue

class의 부트스트랩은 잘 모르겠다. 그냥 부트스트랩 홈페이지에서 그때그떄 찾아 쓰는게 좋을거다.

여하튼 주소창 뒷부분에 /example를 추가해서 들어가면

이런식으로 부트스트랩이 잘 적용된 Example 주소가 나온다

아까와 같이 TodoPage.vue 파일을 만들고
그 컴포넌트를 불러올수 있게 세팅한다. (router.js)
TodoPage.vue의 기본 레이아웃을 잡을 준비를 한다.

TodoPage.vue

<template>
<div class="container">
  <h2>Todo List</h2>
  <div class="input-group" style="margin-bottom:10px;">
    <input type="text" class="form-control" placeholder="할일을 입력하세요">
    <span class="input-group-btn">
      <button class="btn btn-default" type="button">추가</button>
    </span>
  </div>
  <ul class="list-group">
    <li class="list-group-item">
      청소하기
      <div class="btn-group pull-right" style="font-size: 12px; line-height: 1;">
        <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          더보기<span class="caret"></span>
        </button>
        <ul class="dropdown-menu">
          <li><a href="#">삭제</a></li>
        </ul>
      </div>
    </li>
  </ul>
</div>
</template>

내가 원하는건 부트스트랩이 아닌 Vue기에 부트스트랩 관련 내용은 그냥 복붙했다.

 

TodoPage.vue의 Script

간단한 스크립트를 작성해봤다. 템플릿과 연결해주자

v-for문으로 todos 안의 내용들을 반복해서 넣어준다
v-for문으로 인해 하나씩 다 들어왔다.

삭제 기능

methods로 deleteTodo 이벤트가 발생시

 

그런데 자꾸 splice랑 slice가 헷갈리네..

그렇다. 특정 범위의 값을 추출한다.

삭제 버튼을 클릭할 시 deleteTodo 이벤트를 연결해주자

위와 같은경우 deleteTodo 이벤트가 todos안의 todo를 1개만큼 추출한다

생성 기능

텍스트필드를 data의name값과 바인딩시킨다

key-up.enter 엔터를 누를경우 createTodo이벤트를 발생시킨다

추가 버튼을 누를경우도 createTodo 이벤트를 발생시킨다

data의name의 기본값은 null
name이 null이 아니면 todos배열 맨뒤에 name값을 넣는다 그 후 data의 name값을 null로 다시 바꿔준다
추가 제거 gif

'프로그래밍 > Vue.js' 카테고리의 다른 글

계산기 소스 리뷰  (0) 2019.06.04
CodePen 코드리뷰  (0) 2019.06.04