Asked Friday, 7:49 a.m. 60 0 1
  • 60 0 1
0

Code Vue vẫn chạy bình thường tại sao console lại đỏ ạ? :V

Share
  • 60 0 1

Em đang code cái đổi ngôn ngữ theo router params locale nó vẫn chạy bình thường tuy nhiên nó báo các lỗi ở console là:

Error in render: "TypeError: Cannot read properties of undefined (reading 'home')"

Cannot read properties of undefined (reading 'home')

Ở giao diện chính nó sẽ dạng như sau...

<div class="collapse navbar-collapse" id="navbarNavDropdown">
        <ul class="navbar-nav" id="menu">
          <div class="list-nav-item">
            <li>
              <a            
                >{{localised('home')}}</a
              >
            </li>
            <li class="nav-item">
              <a
                >{{localised('about')}}</a
              >
            </li>
            <li class="nav-item">
              <a
                >{{localised('newspaper')}}</a
              >
            </li>
            <li class="nav-item">
              <router-link
                class="nav-link rttr"
                :to="'/recruit' && '/recruit/vi'"
              >
                {{localised('recruit')}}
              </router-link>
            </li>
            <li class="nav-item">
                <a
                >{{localised('contact')}}</a
              >
            </li>
          </div>

          <li class="nav-item dropdown" id="language">
            <a
             id="navbarDropdownMenuLink"
            >
             b>VN</b>
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
              <a class="language-Viet row" href="/vi">
                  <b value="vi" >Tiếng Việt</b>
              </a>
              <a class="language-English row" href="/en">
                  <b value="en" >English</b>
              </a>
            </div>
          </li>
        </ul>
      </div>

Ở phần Script xử lý như sau ạ:

<script>
export default {
  data() {
    return {
      active: null,
      activeLocale: null,
      menu: {
        en: {
          home: "Home",
          about: "About",
          newspaper: "Newspaper",
          recruit: "Recruit",
          contact: "Contact",
        },
        vi: {
          home: "Trang chủ",
          about: "Về chúng tôi",
          newspaper: "Tin tức",
          recruit: "Tuyển dụng",
          contact: "Liên hệ",
        }
      },
    };
  },
  mounted(){
    if(this.$route.params.locale == null){
      this.activeLocale = 'vi'
    }
    else{
      this.activeLocale = this.$route.params.locale
    }
  },
  methods: {
     localised(key) { 
      return this.menu[this.activeLocale][key]
    },
  },
  }
};
</script>

Mong được chỉ giáo, em xin cảm ơn

1 ANSWERS


Answered Friday, 7:52 a.m.
Accepted
+1

Chào bác lại là em đây =))). Thay vì bác để activeLocale = null sao bác k để luôn là activeLocale = 'vi' nhỉ. Bác thử xem có còn lỗi không 😄? Hoặc bác thử để phần logic đó vào created() thay vì mounted() xem sao nhưng em vẫn recommend cách mình set luôn activeLocale = 'vi'

Share
Avatar Phạm Duy Vũ @binchanhkun99
Friday, 7:55 a.m.

Hay toá tròi, cảm ơn bác nhìu nhìu nhen ^^ dạo này chắc em ăn phải cơm tẩm đá rồi 😦

+1
| Reply
Share
Friday, 8:00 a.m.

@binchanhkun99 mà khi bác đăng code lên thì trong phần ``` bác thêm chữ Javascript vào xem code sẽ được hightlight dễ đọc hơn nhiều ✌️ . Như hình bên dưới này bác.

Screenshot from 2022-08-05 14-59-49.png

0
| Reply
Share
Avatar Phạm Duy Vũ @binchanhkun99
Friday, 8:07 a.m.

@dangcq17 Vâng oke bác ơi, để tí em đăng bài khác bác nhớ vào trả lời xem nó có highlight chưa nhé bác :v

+1
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.