سلام دوستان ویوویی. یکی از مهم‌ترین قسمت‌های ویوو و هر برنامه‌ای قسمتی هست که اطلاعات برنامه اونجا ذخیره میشه. توی الگوی ‌MVVM به این قسمت میگن مدل. مدل جایی هست که اطلاعات برنامه مثلا لیست کاربران، لیست نظرات و ... نگهداری میشه. توی این قسمت می‌خوایم هر چی درباره data وجود داره رو بدونیم 👌

نکته: توی این آموزش منظور از نمونه همون Vue Instance یا Vue.createApp(...) هست.

 

تعریف کردن data

قسمت مدل توی فریم‌ورک ویوو، پراپرتی data هست که توی نمونه تعریف میشه:

const app = Vue.createApp({
  data() {
    return {
      theme: 'dark',
      user: {
        name: "Donald",
        email: "google@me.com",
        address: "Red door, Texas"
      },
      posts: [{ ...}, { ...}, { ...}]
    }
  }
});

همونطور که می‌بینیم data توی ویوو تابع هست که یک آبجکت رو ریترن می‌کنه. این آبجکت رو می‌تونیم از بیرون بسازیم و به ویوو پاس بدیم:

let appData = {
  theme: 'dark',
  user: {
    name: "Donald",
    email: "google@me.com",
    address: "Red door, Texas"
  },
  posts: [{ ...}, { ...}, { ...}]
}

const app = Vue.createApp({
  data: () => appData
});

به محض اینکه نمونه ساخته شد، ما با app.$data به دیتای تعریف شده دسترسی داریم:

let appData = { counter: 4 }

const app = Vue.createApp({
    data: () => appData
}).mount('#app');

console.log(app.$data.counter); // 4

 

نمایش‌ data

ما می‌تونیم به دو صورت به اعضای data دسترسی پیدا کنیم:

app.$data.theme; // dark
app.theme; // dark

که مورد دوم نسخه کوتاه شده‌ی اولی هست. البته مورد دوم برای پراپرتی‌هایی که با _ و $ شروع میشن کار نمی‌کنه. چون ممکنه با پراپرتی‌ها و عملکردهای داخلی فریم‌ورک اشتباه گرفته بشه:

const app = Vue.createApp({
    data() {
        return {
            $theme: 'dark'
        }
    }
}).mount('#app');

console.log(app.$theme); // undefined

 

اگه بخوایم داخل متدهای نمونه به دیتا دسترسی داشته باشیم کافیه از this استفاده کنیم:

const app = Vue.createApp({
  data() {
    return {
      name: "Lukas"
    }
  },
  methods: {
    getName() {
      return this.name; // Lukas
    }
  },
  mounted() {
    return this.name; // Lukas
  }
}).mount('#app');