• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Vue 게시판 vue2 vuetify 적용 시 데이터 조작 문의

vue2 vuetify 적용 시 데이터 조작 문의

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 글쓴이
  • #12105

    김민정
    참가자

    안녕하세요 

    강사님 강의를 보고 제가 따로 프로그램을 만들려고 하는데 css나 html하는게 귀찮아서 vue2에 vuetify를 적용하여 코딩중입니다.

    아래 코딩을 실행했을 때 

    TypeError: Cannot read property 'desserts' of undefined

    이런 에러가 발생했습니다. data()함수 안의 변수를 사용하려면 this.변수명 해서 사용이 가능한 걸로 알고있는데 왜 사용할 수 없는걸까요??

     

    <template>
      <v-card>
        <v-card-title @click="getData">
          {{ subMenuNm }}
          <v-spacer></v-spacer>
          <v-text-field
            v-model="search"
            append-icon="mdi-magnify"
            label="Search"
            single-line
            hide-details
          ></v-text-field>
        </v-card-title>
        <v-data-table
          :headers="headers"
          :items="desserts"
          :search="search"
          v-for="(rowData, idx) in desserts"
          :key="idx"
        ></v-data-table>
      </v-card>
    </template>

    <script>
    import axios from "axios";
    export default {
      name: "User",
      props: {
        subMenuNm: String,
      },
      data() {
        return { 

          search: "",
          headers: [
            {
              text: "구분",
              align: "start",
              sortable: false,
              value: "name",
            },
            { text: "아이디", value: "userId" },
            { text: "닉네임", value: "nickname" },
            { text: "등급", value: "grade" },
            { text: "SMS 수신동의", value: "sms" },
            { text: "EMAIL 수신동의", value: "email" },
            { text: "휴대폰 번호", value: "phone" },
            { text: "계좌번호", value: "accountNum" },
            { text: "회원가입 일", value: "joinDate" },
            { text: "최근 접속정보", value: "accessInfo" },
          ],
          desserts: [
            {
              name: "Frozen Yogurt",
              userId: 159,
              nickname: 6.0,
              grade: 24,
              sms: 4.0,
              email: "1%",
              phone: "01012345678", 
              joinDate: "2021-06-15 12:57",
              accessInfo: "2021-07-21 14:56",
            },
          ],
        };
      },
      methods: { 
        getData() {
          var vm = this;
          axios
            .get("https://jsonplaceholder.typicode.com/users/")
            .then(function(response) {
              // console.log(response.data);
              vm.users = response.data;
              // console.log(vm.users);
              console.log(this.desserts);

              let loedData = {
                name: vm.users.name,
                userId: vm.users.id,
                nickname: vm.users.username,
                grade: vm.users.id,
                sms: vm.users.website,
                email: vm.users.email,
                phone: vm.users.phone, 
                joinDate: "2021-06-15 12:57",
                accessInfo: "2021-07-21 14:56",
              };

              this.desserts.unshife(loedData);
            })
            .catch(function(error) {
              console.log(error);
            });
        },
      },
    };
    </script>

    <style lang="scss" scoped></style>

    #12106

    김민정
    참가자

    main.js 파일에 vuetify를 사용도 선언했는데...

     

    import Vue from "vue";
    import App from "./App.vue";
    import vuetify from "./plugins/vuetify";
    import router from "./router";

    Vue.config.productionTip = false;

    new Vue({
      vuetify,
      router,
      render: (h) => h(App),
    }).$mount("#app");

    #12109

    codingapple
    키 마스터

    일단 this.desserts.unshife(loedData); 이거가 unshift() 일듯요 

    #12110

    김민정
    참가자

    앗;;; 오타가 있었네요 그렇지만 고쳐도 같은 에러가 발생합니다 ㅜㅜ

    #12111

    김민정
    참가자

    확인해보니 저 에러메세지는 axios 할때 

     .catch(function(error) {
              console.log(error);
            });

     

    이 부분에서 찍히는 메세지입니다. 그런데 

     

     .then(function(response) { 
              vm.users = response.data;
               console.log(vm.users);

     

    성공했을때 찍은 콘솔 로그도 함께 찍히는 이유는 뭔가요?ㅜㅜ 둘중 한개만 찍혀야 정상아닌가요 ?

    제가 뭘 잘못하고 있는지 모르겠어요 도와주세요?

    #12114

    김민정
    참가자

    하.. 저는 바보인가 봅니다.......

    var vm = this;

    이렇게 선언해놓고 

    this.desserts.unshift(loedData); 으로 불러서 에러가 났던 거였어요 

    함께 고민해주셔서 감사합니다?

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠