当前位置:首页 > 日记 > 正文

在Vue.js阵中的变化检测

在Vue.js阵中的变化检测
前言

我最近的重组,公司现有业务代码与Vue.js的尝试,基于组件的设计思想和理念有MVVM使我着迷。但这是一个很大的坑,如数组后,结合本文介绍的更新测试。

相信大家都知道,观察员,观察员和VM是Vue公司的最重要的组成部分,它是检测后的数据改变视图的更新重要。用法的例子看vue.js美元,我们讨论了如何落实基本表。

接下来,让我们看看如何实现数组更改检测。

例子:
创建虚拟机
让VM =新的Vue({
数据:{
答:{ },{ },}
}
})

关键字/键路径
虚拟机。$看('a',函数(){(){
/做什么
})
思维
在js中,实现钩子很容易,例如:
一个控制台。
让_log = console.log
console.log =功能(数据){
做 / /东西
_log.call(这个数据)
}
只要我们实现了一个自定义函数,就可以观察数组的变化。
在Vue.js,object.create()的功能是用来进行传承,从而实现自定义功能观察数组。
/简要介绍
var =新的(对象);创建对象,而不是父类

var b = object.create(a.prototype); / / B继承原型
继承
Array.js的定义如下:
获取/原型
const arrayproto = array.prototype
创建一个新的原型对象
出口arraymethods = const object.create(arrayproto)
为了实现这些功能,/新的原型
{
推,
流行音乐,
转移,
位置,
拼接,
排序,
反向
}
。foreach(函数(方法){)
获取一个新的原型函数(未定义未实现)
const原= arrayproto {方法}
添加新功能/原型
object.defineproperty(arraymethods,方法,{)
价值:功能突变体(){
让我为arguments.length
获取参数
const参数=新的数组(我)
当(i){
args {我} =论点{我}
}
函数
const的结果= original.apply(这,args)
获取/观察员
这__ob__ OB = const。
要更改数组本身吗。
让插入
开关(方法){
case'push:
插入=参数
打破
case'unshift:
插入=参数
打破
case'splice:
插入= args.slice(2)
打破
}
新阵列{观测}
ob.observearray插入(插入)
更新
Ob.dep.notify()
返回结果
},
枚举:真,
可写的:真的,
配置:真
})
})
好的,我们已经定义了array.js,和作为一个模块的出口,我们修改了观测器的实现:
导出函数观察器(值){
this.dep =新的DEP()
this.value =价值

如果数组为,则将原型更改为
如果(Array.isArray(值)){
__proto__ = arraymethods价值。
This.observeArray(值)
{人}
this.walk(价值)
}
}

数据元素
observer.prototype.observearray =功能(项目){
为了(让我= 0,L = items.length;i < L;i++){
观察(项目{ })
}
}
当观察者被修改后,我们将再次观察观察者,只是为了改变它的更新功能。
watcher.prototype.update =功能(DEP){
console.log(2。更新)
const值= this.get()
const属性的旧值= this.value
this.value =价值
如果this.value价值(价值| |!= =!= NULL){
this.cb.call(this.vm、价值、属性的旧值)
如果没有这个函数,将导致多次调用$表回调函数。
原因是:观察到了变化数组和新数组,应该删除旧的观察者。
Dep.subs.shift()
}
}
结果uff1a
const VM =新的Vue({
数据:{
B:{ {:'a' },{ B B } }
}
})

虚拟机。$看(B(Val)= > {
console.log(' ------我看到你-----)
})

Vm.b.push(C C:{ })
Vm.b.pop(C C:{ })
Vm.b.push(C C:{ })

结果:
/ / console.log(' ------我看到你-----)
/ / console.log(' ------我看到你-----)
/ / console.log(' ------我看到你-----)
总结

在这一点上,我们已经实现了阵列的变化检测的object.create主要使用()函数。希望本文的内容会对大家的学习和工作带来一些帮助。如果有问题,你可以留言。

相关文章

ps制作逼真的画面反射效果

ps制作逼真的画面反射效果

反射,逼真,画面,效果,电脑软件,通常,在制作地图时,我经常用ps做倒影,使画面更真实。在这里我教你怎么做ps反射。没有朋友可以参考这篇文章,希望对大家有所帮助! ps如何做倒影 1,在这里做图形的倒影,首先使用PS魔棒工具进行人物简介的选择。(这一…

页面设置页面设置Word2003Word2003

页面设置页面设置Word2003Word2003

页面设置,教程,常见问题,电脑软件,Word,现在的Word版本越来越多,但非常到位或安装Word2003版本,对于一些没用的人,一个旧版本的格式,页面设置是一个比较大的问题,甚至可能不知道Word2003页面设置,下面是小编整理Word2003页面设置教程,为你的参考。…

2016顽强签名2016强签名经典签名

2016顽强签名2016强签名经典签名

顽强,经典,电脑软件,森林茂盛,青翠的草地,在雨中,在2016显示了其强大的生命力,许多新的和强大的相关签名,下面请欣赏小编为大家整理2016强签名。 2016不屈不挠的签名建议 1)队伍开了,关了,空间开了,关上了,问我在干什么,我不知道。 2)我最害怕的事情…

HowpptsetsthepageheaderPPTtosett

HowpptsetsthepageheaderPPTtosett

电脑软件,HowpptsetsthepageheaderPPTtosettheheaderofthepagePPT2010tutorial,当我们只做PPT演示时,我们通常会把标题添加到手稿中。我们需要设置一些页眉来添加页眉。我们如何设置它让我们告诉你如何设置PPT头。 设置页眉的方式: 打开ppt…

人工智能和PS创造渐变模式艺术的抽

人工智能和PS创造渐变模式艺术的抽

模式,渐变,创造,抽象,人工智能,根据这一步一步的指导,结合PS图象处理软件和插画技术来创建你自己的抽象艺术的梯度模式。 这些设计基本上都是放在一个动态模糊的背景下,这将导致一个很酷的抽象艺术,这是印刷非常适合,或作为背景来展示你的设计…

Word2003版本Word常见问题中设置字

Word2003版本Word常见问题中设置字

常见问题,字符,设置,操作方法,版本,字符是计算机的字形、字形或符号的基本信息,所以它可以是汉字、字母、数字或单独的符号,也需要格式化字符。字符的格式通常包括字符字体、字符大小、字符粗细、字符间距和各种形式的字符。今天,小编辑器教你…

服务器返回的十四个常见HTTP状态代

服务器返回的十四个常见HTTP状态代

状态,服务器,详细信息,十四个,常见,HTTP状态代码 状态码由3位数字和原因短语(例如,最常见的200位)组成,其中第一个数字代表响应类别,响应类别为1到5,它分为五种。 问题补充:其实我发现一个600 unparseable响应头6次。 这意味着服务器不返回响应头…

Outlook无法预览office文件

Outlook无法预览office文件

文件,电脑软件,Outlook,office,问题:当我安装Outlook 2010,然后在邮件附件中打开Word文档和Excel表单时,我总是被提示不预览文件。请问,出什么事了 答:如果您想在Outlook中预览Word和Excel文档,则必须在系统中安装Word和Excel应用程序。没有相应…

Excel2007建立信任中心的方法和教

Excel2007建立信任中心的方法和教

方法,教程,信任,中心,电脑软件,当您使用excel表时,您可能会遇到一些带有宏的表,但有些功能是无法启动的。我们该怎么办下面是如何在信任中心启动宏的功能。 在Excel2007中的步骤来建立信任中心如下: 单击菜单窗口中的Excel选项;。 点击信任中…

如何删除QQ空间日志QQ空间

如何删除QQ空间日志QQ空间

空间,删除,日志,电脑软件,QQ,QQ空间中的日志记录了日常生活中的点点点点,下面是如何删除QQ空间日志以及如何批量删除日志。 QQ空间日志删除方法 进入QQ空间,打开空间日志,选择一个你需要删除的日志,指出后面的编辑按钮,选择在下拉菜单中,删除日…

PHP使用mysql_insert_id()函数来获取

PHP使用mysql_insert_id()函数来获取

函数,数据,出版物,电脑软件,PHP,前言 这个问题最近在我的工作中遇到了。我们如何在PHP中获得ID(或当前发布文章的ID)我认为有必要整理出详细的解决办法来帮助和帮助需要帮助的朋友。如果我们不多说话,让我们详细看看解决方案。 解决方法 事…