Vue MVVM模型与data及methods属性超详细讲解

 更新时间:2022年10月08日 14:56:49   作者:东非不开森  
MVVM旨在利用WPF中的数据绑定函数,通过从视图层中几乎删除所有GUI代码(代码隐藏),更好地促进视图层开发与模式其余部分的分离,这篇文章主要介绍了Vue MVVM模型与data及methods属性

1.MVVM模型

⭐⭐

MVC和MVVM都是一种软件的体系结构

  • MVC是Model – View –Controller的简称,是在前期被使用非常框架的架构模式,比如iOS、前端;
  • MVVM是Model-View-ViewModel的简称,是目前非常流行的架构模式;

Vue的整个设计受到MVVM模型的影响

MVVM模型:

  • M:模型(Model):data中的数据
  • V:视图(view):模板代码
  • VM:视图模型(ViewModel):Vue实例
<div id="root">
      <h1>school:{{name}}</h1>
      <h1>address:{{address}}</h1>
      <h1>test:{{1+1}}</h1>
 </div>
<script type="text/javascript">
Vue.config.productionTip = false; //设置为 false 以阻止 vue 在启动时生成生产提示。
const vm = new Vue({
      el: "#root",
      data: {
        name: "xiaozhao",
        address: "henan",
        a: 1,
      },
    });
console.log(vm);
  • data中所有的属性,最后都出现在了vm身上
  • vm身上的所有属性,及vue原型上的所有属性,在Vue模板中都可以直接使用

2.data属性

⭐⭐

data属性是传入一个函数,并且该函数需要返回一个对象:

  • 在Vue2.x的时候,可以传入一个对象或者一个函数;
  • 在Vue3.x的时候,必须传入一个函数

data中返回的对象会被Vue的响应式系统劫持,之后对该对象的修改或者访问都会在劫持中被处理:

  • 所以我们在template或者app中通过 {{counter}} 访问counter,可以从对象中获取到数据;
  • 所以我们修改counter的值时,app中的 {{counter}}也会发生改变;

data有2种写法

  • 对象式
  • 函数式

对象式

      data: {
        name: "zj",
      },

函数式

data function(){} data不能写箭头函数 this指向问题

      data() {
        console.log("@@@", this); //此处的this是vue实例对象
        return {
          name: "zj",
        };
      },
<div id="app">
      <h2>{{message}}</h2>
      <button @click="changeMessage">改变message</button>
    </div>
    <script src="./lib/vue.js"></script>
    <script>
      const app = Vue.createApp({
        data: function () {
          return { message: "Hello Data" };
        },
        //函数式
        methods: {
          changeMessage: function () {
            this.message = "hello hhh";
          },
        },
      });
      app.mount("#app");

3.methods属性

✨✨

methods属性是一个对象,通常我们会在这个对象中定义很多的方法:

  • 这些方法可以被绑定到 模板中;
  • 在该方法中,我们可以使用this关键字来直接访问到data中返回的对象的属性;
<script src="./lib/vue.js"></script>
    <script>
      const app = Vue.createApp({
        data: function () {
          return {
            counter: 0,
          };
        },
        //methods:option api
        methods: {
          increment: function () {
            this.counter++;
          },
          increment() {},
          // methods中的函数不能写成箭头函数
          increment: () => {
            console.log(this);
          },
        },
      });
app.mount("#app");

在方法中访问属性

在 methods 方法中访问 data 的数据,可以直接通过 this.属性名 的形式来访问。

到此这篇关于Vue MVVM模型与data及methods属性超详细讲解的文章就介绍到这了,更多相关Vue MVVM模型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • element中el-cascader级联选择器只有最后一级可以多选

    element中el-cascader级联选择器只有最后一级可以多选

    本文主要介绍了element中el-cascader级联选择器只有最后一级可以多选,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • vue如何给组件动态绑定不同的事件

    vue如何给组件动态绑定不同的事件

    这篇文章主要介绍了vue如何给组件动态绑定不同的事件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue子组件实时获取父组件的数据实现

    vue子组件实时获取父组件的数据实现

    本文主要介绍了vue子组件实时获取父组件的数据实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • vue3开启摄像头并进行拍照的实现示例

    vue3开启摄像头并进行拍照的实现示例

    本文主要介绍了vue3开启摄像头并进行拍照的实现示例,主要是使用navigator.mediaDevices.getUserMedia这个API来实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Vue3项目实现前端导出Excel的示例代码

    Vue3项目实现前端导出Excel的示例代码

    这篇文章主要介绍了Vue3项目实现前端导出Excel的示例,在vue3的项目中导出Excel表格的功能,可以借助xlsx库来实现,下面是详细的操作步骤,需要的朋友可以参考下
    2025-01-01
  • 关于this.$refs获取不到dom的可能原因及解决方法

    关于this.$refs获取不到dom的可能原因及解决方法

    这篇文章主要介绍了关于this.$refs获取不到dom的可能原因及解决方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Vue实现全选多个选择框

    Vue实现全选多个选择框

    使用v-model绑定布尔变量实现全选功能:定义数组存储状态,使用v-for循环渲染选择框,绑定状态;添加全选复选框,绑定布尔变量;使用watch监听全选复选框状态变化,更新数组中每一项的状态
    2025-01-01
  • vue跳转外部链接始终有localhost的问题

    vue跳转外部链接始终有localhost的问题

    这篇文章主要介绍了vue跳转外部链接始终有localhost的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • vue实现todolist基本功能以及数据存储功能实例详解

    vue实现todolist基本功能以及数据存储功能实例详解

    本文通过实例代码给大家介绍了vue实现todolist基本功能以及数据存储功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 关于vue 结合原生js 解决echarts resize问题

    关于vue 结合原生js 解决echarts resize问题

    这篇文章主要介绍了关于vue 结合原生js 解决echarts resize问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论