早安,又是居家办公的一天,今天我们聊聊一个Vue基础知识:了解下MVVM模型与data及methods属性。
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模板中都可以直接使用
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");
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.属性名 的形式来访问。
网友评论文明上网理性发言 已有0人参与
发表评论: