00:00
哈喽,各位小伙伴们大家好。那接下来啊,咱们要去完成修改属性的操作。那咱们呢,去看一下吧,咱们正在开发的这个项吧,那咱们呢,先把这个is show table这个属性啊,让它的默认值啊先改为什么,是不是先改为true对吧,因为正常的情况下,Is show table应该呢也是为true。只不过咱们最开始的时候,为了方便能写那个添加属性,因此才改为force。那咱们看一下子。那比如说啊,用户选择手机。对吧,手机通讯手机。那么除了可以添加属性,还有一个地方是不是可以进行修改这个属性?对吧,那咱们呢,可以看一下呢,已经写好了这个项。那比如说我选择的是手机。手机通讯手机,那你除了添加以外,是不还可以修改。
01:01
那修改是不是得把已有的属性与属性值,你是不是得展示出来?对吧,那所以说回到咱们这里,那比如说老师选的是手机,手机通讯手机,那么我要修改这个属性对吧,以及它相应的属性值,那你点击这修改属性。对吧,那咱们至少得把属性和属性值默认是不是展示出来。对吧,那所以说啊,咱们呢,把这里给它完成。那也就是说,当你点击操作当中这个修改按钮的时候,那么你需要把当前的这个属性是不是传递进来。对吧,那咱们呢,可以去找一下子。找一下这个按钮,它应该呢,是最开始的这个table表格当中的最后一列的第一个按钮。对吧,那咱们呢,去找一下子,那么应该啊,是顶上这个结构当中的table。
02:01
对吧?At table最后一列当中的第一个按钮,这不这修改吗?对吧,那这里呢,要注意一件事什么事。那么当你点击这个按钮的时候啊,你不仅仅说只是把is show table,对吧,把当前这个表格给它隐藏掉,那还有一些事。对吧,那咱们呢,可以在这啊给他写一个相应的回调。对吧,那比如说咱们起个名字叫做update a tr,叫做更新a tr。那这里面呢,你要注意一件事,要不要纯参。对不?你看咱们可以找一些多的啊,属性比较多的,就比如说我想修改颜色这个属性,那你需不需要把相应的属性与属性值传进来,是不是传给毁掉。对吧,那当然是需要的,因为你得知道你要修改的是哪一个属性。对吧,那所以说咱们这里面呢,可以把咱们的这个肉啊给它传进来。
03:02
而这个肉就是什么,就是你选中的当前的这个属性。那咱们呢,可以写一下这个回调。那这里啊,老师呢,把已经写完了就给它合上了,那这块呢,咱们做一下笔记,这叫修改某,哎,一个属性叫做update at tr,那么咱们传了一个肉。那咱们呢,去看一下这个肉它是谁。对吧,咱们呢,给他打印一下子,老师们也给他刷新,比如说啊手机,手机通讯下的手机,它只有一个属性是汽车。那么当你点击这个修改按钮的时候,你看这个肉是谁,是不是就是当前的这个属性对吧?汽车以及属性只有俩,兰博基尼和布加迪对吧?以及也有相应的三级ID和level。对吧,那所以说这个肉是谁,即为咱们要修改的啊,就是进行修改的这个数据。
04:02
那当然,当你一点击这个按钮的时候,这个回调做的第一件事,哎,是把咱们的这个呃,Is show。Table,那么变为什么?是不是变为false?把最开始的结构是不是要隐藏?所以说this there啊,This there is show table为什么为false?对吧,那还有其他的事儿,那咱们先看一下这块有没有给他完成手机手机通讯手机对吧,找你看一下,这是没问题。那么还有一件事就是什么,你选中的那个属性啊。对吧,比如说是汽车,你是不是在这儿进行展示,那其实展示啊很简单,你像这块结构展示数据用谁用的不就是a tr吗。你没发现这个肉的这个结构和这个at t音否很像?那所以说啊,咱们呢,可以做一件事什么事,哎,就是讲。将选中的属性啊赋值给at tr info。
05:06
所以说face.at tr音符等于谁,等于肉?那咱们呢,先看一下O不OK对吧,手机。手机通讯手机。对吧,那老师呢,点击修改没问题。对吧,那假如说用户真修改了,比如说咱们改成啥,改成叫做汽车人。对吧,那这块有什么,比如说有超人。哎,超人,哎,比如说有华为,这是老师随便写的一些数据。那如果说你点击了保存没问题,很OK。对不,那万一他点击的是取消呢。那你会发现一件事什么事,虽然老师点击的不是确定对吧,不是保存,而是取消,但是你发现数据有没有改,有改。对不,那为什么呢?那咱们得琢磨琢磨看这。你看这老师呢,把开把开发者工具啊,我也给你打开对吧,眼睛见到的才是为真,你看啊老师呢,给你说的什么。
06:07
比如说你选中的是手机下的手机,通讯下的手机没问题。那咱们的at tr list这个数组,那是不是就是目前这里面展示的这个已有的这个属性。对吧,那么这个事物组里面呢,有一个元素,那这个元素是什么,是不是汽车。对,不,以及有两个相应的属性值,分别是布加迪和和谁和兰博基尼。对不,那也就是说你当前展示的,哎,这个属性,那不就是这个at tr info list当中这个元素。那你要注意一件事,什么事?当你点击这个修改按钮的时候,你是把at tr list数组当中的这个元素。是不是赋值给了谁?给了a tr info?那也就是说这两个对象啊,实指是同一个哪两个对象?就是at tr历史数组当中这个对象和at tr info当中这个对象,它俩指向的是同一个对象。
07:10
对不,而且咱们这块呢,也进行了数据的双向绑定,这就为什么你这块写你会发现这两条数据都跟着变。发钱。对吧,因为它两者指向的是同一个对象。对不,那所以说当你在一取消的时候,你看其实展示的这个数据是不是,虽然你没有进行修改,但是不是由于数据需要绑定,是不是数据也发生了变化。那所以说怎么办呢?那有的同学可能会想到说老师,那很简单。前拷贝点点点谁肉。那咱们看一下吧,因为这种情况咱们以前遇见过,那如果前拷贝可不可以,那咱们看一下手机。对吧,手机通讯手机没问题。走,那比如说老师来个汽车一以及布加迪二,我点击取消,OK,你会发现汽车没有受到影响,而布加迪二是不是受到影响。
08:04
那为什么呢?对不,那也就是说咱当年用钱拷贝就可以解决,那为什么现在不可以呢?那这块呢,你要注意一下。因为它的数据结构很复杂。对,不也不是很复杂,因为什么?因为它的结构是对象。对象当中这儿的数据,那这块前拷贝是没问题的,但是它这里面出现了一个数组,数组里面又出现了对象,那所以说咱们得使用到前拷贝去解决这个问题。对吧,那么呃,得使用深拷贝去解决这个问题,而浅拷贝是没办法解决这个问题的。那所以说咱们写一下子,那么由于数据结构当中,哎,结构当中那么存在什么呀对象。里面。哎,套数组以及数组里面又套什么呀,对象。
09:00
那么因此需要使用深拷贝来解决。来解决啊这类问题。那么深拷贝啊,其实咱们呢,可以用到一个插件,就是一个low大。那咱们看一下咱们的note module当中有没有low大。对吧,诶logo大使其实在咱们的前台项目当中,咱们已经使过了,对吧,是不是有。对吧,那所以说咱们就可以引入low大师当中的深拷贝。哎,就是按需引入。截一下。就是按需引入low dash lo low dash当中的什么呀,哎。当中的。深拷贝。对吧,那么import它叫什么?叫做可deep。Forron从谁那引入?是不是从low dash啊?Lo sh low dash下的。
10:00
Close deep cleanp,单词别错,错了就送你俩字,凉凉。对吧,那所以说那这块呢,咱们就可以使用什么,使用深拷贝去解决,那这块谁是c deep。对吧,传的谁传的是肉。对吧,那这块呢,咱们的回首的再测试一下,你看这回啊手机。手机通讯。手机对吧,那比如说我选择的是汽车,没问题,走汽车后面老师给他来个一对吧,这块分别来个二,这再来个三走你你看是不是没有受到影响。对吧,那所以说这块呢,一定要注意,咱们前面的实话啊,用了一个拷贝就可以解决,因为它的数据结构不不是很复杂,就一个对象,你深拷贝完全可以拷贝出一个新的对象,但是你要注意当前的这个对象当中,它的结构是什么样子的,你这块一定要注意。是由于。它的这个对象的里面看着啊,数组当中这个对象,对象的里面又出现了俩数组,数组里面又出现对象,所以说前拷贝是没办法解决这个问题的,因此咱们需要使用到深拷贝。
11:10
而且呢,浅拷贝深考贝在面试的时候出现的频率很高,而写一下吧,也就说深考贝。以及啊,还有这个前拷贝。那么在面试的时候,面试的时候出现的频率很高。对吧,哎很高,那千万别忘记,在咱们的基础的时候,咱们也讲过手写的深拷贝和浅考背,浅考背切记要达到手写,哎手写什么呀,是不是手写深拷贝。而深拷贝与浅拷贝。对吧,那当然,哎前拷贝。啊,钱。拷贝,那当然目前咱们是写项,那当然有现成的low dash,咱们就直接用low dash,而且呢,这种现象呢,老师也说过,这种呢,叫做按需引入,因为low大sH当中啊,他写的函数有很多,那如果说你不这么引,你非要这么引,对吧,引个杠。
12:11
这能懂吧?那代表啥?代表的是把所有的函数都引进来了,而咱们只需要谁,只需要深拷贝,所以说你这按需引入深拷贝函数就行了。好吧。
我来说两句