VM视图数据模型的原理(个人拙见)
在学习Vue的过程中会好奇,为何视图可以随着视图数据的改变而自动改变?MVVM的VM是如何做到的?
在看了相关的文章和教程后发现其实是一系列非常有意思的代码协同操作,所以我把自己的了解记录下来
首先需要书写一个事件的订阅和发布函数
function EmitEvent () { //注册一个回调对象,储存事件处理函数,通过键值对的方式,一个事件名称可以储存多个事件处理函数 { '事件名': [ [Func], [Func] ] } this.callbacks = {} } // 注册事件处理函数 EmitEvent.prototype.on = function (eventName, eventHandler) { if (!this.callbacks[eventName]) { // 如果改事件名称没有注册事件处理函数,则注册一个新的事件处理函数数组 this.callbacks[eventName] = [] } // 将新注册的事件处理函数 添加到事件处理函数数组 this.callbacks[eventName].push(eventHandler) } //模拟事件的发布(即触发事件) EmitEvent.prototype.emit = function (eventName) {