00:00
编码实现的,那编码实现四层代码从底层开始写。那先写市场活动备注的map,从map中啊,在map里边加一个方法,这个方法就是根据ID去删除市场活动的备注,知道吗?所以下边我们来加一个方,然后呢,来加过来,然后呢,在市场活动备注的map里边加一个方,这都是设计好的范围值,影响记录条数,然后方法名也都设计好了,叫delete I,你知道吗?Remark by ID,根据ID去删除市场活动备注。当然这里边传个参数,这个参数就能ID知道吧,然后呢,我们这个地方还有啥,然后呢,这个地方来一个根据ID来删除市场活动备注那啊。好,方法定义好了,下边我们来写搜入句了,然后呢,在这个什么映射文件里面加个搜索句,那加过来了吧,这个搜索句,删除的搜索句这类意思,这些语法都太简单了,大家你白这些,然后呢,这个地方来一个啊,ID要和方法名一样,那来找到这个方法名呗,就是这个方法名,然后呢,这个地方来,然后呢,在这个这边一个参数帕的态度,根据ID上,那ID是字符串,所以我们这地方还有字符串啊,Delete的语句自动访问一行就条入,不用管注,咱们要太多。
01:29
然后在这里边写我搜句行了,来写句删除的搜句这类,然后呢,From对从哪个标准边上对mark这个备注表上,根据什么去上对YID根据ID上,然后把传来那个ID获取到。这个井号打call号做这样的话,这个骚扰句就行了,好吧,要删哪个备注就直接执行这个骚扰句是。稍有预想了,这个map里就行了。
02:01
那么层写完了,下边我们就要写这个service了,好吧。然后在市场活动备注的sorry的时候加一个方法,这个方法根据ID来删除市场活动备注。那我们来看写这个,来写这个,那我们首先再看,呃,放值影响技术条数,下边写这个方名叫delete activ,然后呢,Mark by ID,然后呢,在这边来一个参数,来个ID。然后呢,方法对好了,在时间类里边也得加这个方法,那加过了吧,来个out ins,然后呢。好,这样service位层方法的实间调map层,然后呢,直接调过来就行法,那调调哪一个方法,咱们刚刚写这个方法,根据ID来删除市场的备注,然后呢把他的ID重过来,这样的话呢,我们就可以了,你知道吗。这样的话大家我们这个service就行了,这样map service都写好,Map service写完了,下面写control,在市场活动备注的control里边加一个方法。
03:10
这个方法就是根据ID来删除市场活动备注,所以下边我们来加这个方法,在市场活动备注在这个CTR里边加一个方法。CTR热情的方法public返回值,来家看返回什么类型的,对O解,然后在这加个方法名,方法名建名之意,Delete叫I,然后呢,Mark知,然后呢by ID,然后呢,这样就行了,然后它这个C存的方法,加一个request map,给它分配一个URO,这个UR我们说不能随便写,要和他处理的自源路径保持一致,那他出的自源路径还是这个页面,明细页面,它压根不跳转页面,响应信息也回到这个页面。
04:01
那它这个路径要和这个页面路径保持一致,那这个路径就是沃奔驰activity知,所以我们这个地方直接写了这个地方来一个沃不式I下边资源的名称和方法名保持一致,然后呢,它点do就行了。好,这是我们要说到这,那将来这个方法我们说它要访问个加response就种,那在这个方法里边定义个行态,接收客户端传用参数,那这个行态就是我们的这个ID,这都是设计好了,好这样的话,这个方法就定义好了,方法定义好了,现在已经来到这一步了,接收请求或取参数了。下边第四步调用service方法来删除数据就行了,所以我们下边继续直接来调用service层双法来删除备注啊,那调service的法就是调到那个叫activitymark service,那直接调就行了,Delete activitymark by ID。
05:12
然后呢,把这个ID了。嗯,这样啊,然后呢,这个地方得到一个影响记录条数,这样这样的话呢,我们这个地方已经写到这儿来了,已经写到这了。那写到这儿,我们下面那么CTRL从第二个职责就完成了,业务处理好了,下边就是根据处理结果生成详应信息,那我们说这个是写数据的,那它是处理结果,我们也考虑写成功了写是吧,所以那写成功了写是吧,怎么串开,然后呢,这个地方来一个啊串开,然后呢,这个地方来一个exception知道吗?然后呢,我们这个地方来一个1.print知把错误打一下啊好,那要返回,不管成功了还是失败了,将来我们都要返回这么一个阶层。
06:11
那要返回这个界面,要把这些数据都封装加构对象,哪一个加构对象就是封装好这个交规,他也熬不AC口。所以你看完了没?这些代码基本上都是都是固定的套路,知道吧,都这样。他不管是做增删检查,不管做什么功能,基本上都是这样。你只要做过一个项目,基本上你就有项目经验了啊,其他的项目都不带成问题,好,这时我们这样,然后呢,大家那我们来看看成功了是败了,没报异常,没报异常那不一定就成功了,那来看看影响技术投数大于零才成功了,那他成功了,那我们这个地方来一个直接算了cover,然后呢叫contain点,二来一个success,成功了只返回成功就行了,失败了继续还二然后呢,这个地方来一个set code,然后呢叫contain点,然后呢失败了还要返回失败的原因叫set message,然后呢在这里边来个叫系统猫,然后呢请稍后重试知,那如果报异常,报异常也直接失败了,然后呢,这个地方来个然后最后把这个对象反过来就行了,然后呢return,直接把它放知。
07:32
这样的话,咱我们这个后台CTRL就行了,校长。这时候我们这了,那后台这个control写完了,后台就写完了,My service controller都写完了,那后台写完了,下边就前台了,前台了,那前台我们说从流程上来讲两两件事那吧,第一个发请求,第二个处理响应,那首先来看什么时候发请求。那什么时候发起以后,到我们这个地方,根据我们的需求说用户想删一个备注的时候,他鼠标放上去,这个图标就显示出来了。
08:08
然后呢,鼠标放到图标上面变红色了,这些咱们刚刚都已经写过了,写过了知道吧,然后当用户一点这个图标就要向互的化进去了,所以下边我们要做的事呢,就是给所有备注后边这个删除图标添加单击事件就行了,添加上单击事件,所以给这些图标都加上待机时间啊,所以下边我们这个地方要给它加了,然后呢,来找找在这个加再加的话也是什么在入口函数中在这的统一价。给所有的删除图标添加单击事件,所以我们这种给所有的删除图标添加单击事件。
09:05
那大家看加单击事件的话,这个添加的时候,我们说加事件有两种方式,传统的方式还是用傲慢的方式,这个地方大家都用哪一种方式,对得用on了,为什么?就是因为我们说有可能新添加的备注。新添加备注,这条备注后边这个图标是动态生成的元素,所以必须得用on这种方式啊,用on这种方式加那就加了呗,好,那用on这种方式加,首先得找到这些什么图标,他们有一个固有的负氧素,那个固有的负氧度是谁呀谁呀,是不是还是那个叫remark克Di维利斯的,对还是这个把它拿到就行,还是然后呢掉啊是,所以大家要跟上我们的思路,你知道吗?调on这种方式就行,那在这个地方再看我说三个参数,第一个视件类型,单击视角对雷啊下边目标选择器,目标选择器叫什么。
10:12
第二。对点。这叫什么这个吗?直接这么写行吗?可不可以链接,对,这是超链接,这就是那个删除图标啊,能不能直接这么写。对,为啥不能呢?对这个修改图标是不是也选上了这个,那人家本来做删除,你点人家本来做修改的,你点它,它就做删除了。所以大家不能用这个了,那用哪一个。那你讲那讲。对,现在这个副标签下边你要找的这个标目标,目标元素不止有这一个这一种元素了,还有另一种元素呢,而且他俩基本上都是一样的,你看吧,那我就想给删除图标加上时间,就给这种元素加直角,怎么办呢?
11:15
对,是不是你要给他俩制造一点不一样了,如果他俩完全一样,你可你区分不出来了,对,所以给他俩制造不一样,如何制造不一样。自定义属自己的那个自定义,对前面我们跟大家说了,这些标签是不是随意可以自己扩展啊,随意自定义属性,我可不会这样给这个图标自定一个什么,给这个图标将来也会加单机时间,给他们两个都自定一个属性,这个属性值,这个属性名叫什么无所谓,属性值呢叫什么也无所谓,但是他俩呢,值不能什么。一样对值不能一样就行了,大家明白这意思吧,那么将来我这个目标选的就找那些A标签,哪些A标签通过自定义这个属性是不是就可以过滤一下了,过滤一下大家能理解这个意思吧,所以那这个地方我记他们自定义属性,自定属性名叫什么无所谓了,那我叫什么对就随便就随便叫了啊这个A标签那我就叫什么叫内吧。
12:24
内幕属性?随便自定义个属性,为什么叫内幕?因为大家看我们其实一叫别的叫啥都行,为什么叫内幕,因为大家看我们说我们加这个属性的目的在干什么呢?就是获取,对,就是获取这个元素,是不是将来获取这个元素,内幕属性主要是用来什么,就是获取一些元素的,对吧?那你们老师获取元素不是这个吗?ID吗。ID是什么?是用的最多的获取元素的这个元素,这个属性用这个,那么但是ID什么有局限性,有什么局限性,对在一个页面里边不同的标签的ID是不是那个ID值不能重复,一重复,那么这么这个页面就报错了,但是我们这个地方打卡,假如说你你要用ID的话,那这个ID值你设置什么。
13:20
对你ID值是不是按理说每一条备注后边这个什么删除图标上面这个值按理说都是一样的,这样我以后过滤才好过滤啊。那你要如果用ID的话,大家一样就重了,重了在整个页面就报错了,所以我们这个地方不能用ID,其实按理说应该用ID,但是我们说ID有局限性,不考虑ID了。是吧,那你说老师,万一我以后什么万一要定位一个标签,我要定位一个标签,能不能用ID,如果只你能确保它的ID值不重复,这个时候就用ID。就像咱们刚才给这,咱们不是别说刚才咱们一直以来要获在页面上获取某一个元素,是不是就给那个元素加个ID啊,就是这种思想的体现,其实就是给元素添加属性的这种思想。
14:10
添加属性的时候用什么对吧?我们前面给大家讲,就是我们上次给大家讲的时候,给大家讲的什么呢?给大家讲的这个给元素自定义属性道使用标签保存数据,给元素添加属性知道吧?那么我们今天就给大家讲一个什么不是给不是让原标签给我保存属性了,如我给我保存数据了,那我今天给大家讲的目的在什么?为了定位某一个标签以后为了选中某一个标签,给那个标签定义属性。知道吗?那以前为了保存数据定义属性,优先考虑什么Y6属性,如果什么不是表单组件,是表单组件优先考虑Y置组,如果不是表单组件,就不用Y数,用自定义属性,这是给标签加属性,这是第一个目的,为了让它保存数据加属性。
15:07
然后现在我们又给大家讲一个给标签加属性,它的目的不在于保存数据了,是在于定位标签。这个时候这些属性。优先考虑ID属性,ID属性不方便怎么不方便了,只有可能重了,这个时候不能用ID了,用谁优先用内知道吧,如果你说老师内幕也不方便呢,那就可以用自定义属性了,知道吧,所以我这个地方再给大家再次在上课给大家讲的基础上再次总结一下。再次总结一下,我们这个来个第三个,第三个我们以后经常会遇到这种技巧,在页面上给元素,给元素扩展属性,给元素扩展属性是我们经常采用的一种手段,是吧?给元素扩展属性它的理论基础就是标签是自定义的,是自定义什么标签是可扩展的语言,标签里边元素可以随意定义,只要是合法的这个标志符就行,知道吧,所以我们说这种页面叫HTML页面,HTML页面是可扩展的。
16:22
是可扩展的标记语言。它的理论基础就是。那我们说这么一个标签,我们可以就是可以那么给那么标签,给指定的标签,指定的标签任意扩展属性,任意扩展属性啊,随便扩展,只要是符合这个属性名,只要属性名符合属性名,然后呢,符合标识符的命名规则即可随款这他的语文记录。
17:07
但是我们扩展的时候一般有两个目的,一般来讲给别人两个目的,两个目的扩展属性不是扩展着玩的,是我们什么有目的了才扩展属性,有用了才扩展属性,那有哪两个目的?第一个目的你知道吗?是为了让标签帮我保存数据,使用标签帮我保存数据,这是一个目的,这种目的的时候,大家使用这些什么,那使扩展的这个属性叫什么呢?优先对吧,就像我们昨昨天给大家,昨天给是上册给大家说的,看看是不是表单组件,如果是表单组件,标签优先用VALUE6只有不方便才用自定义的,如果不是表单组件,不推荐用value,就用自定义的,这是我们上次给大家讲的吧。
18:05
这是我们说扩展属性的时候,这是这一个,再一个扩展属性不是为了保存数据,是用来干什么,是为了定位元素,就定位标签,就我为了以后选中哪一个标签,为了获取哪个标签,这个时候我也可以通过自定义属性。那自定义属性这个时候用什么属性优先考虑,不管是表达组件还是别的别的标签,优先考虑ID属性性考虑ID属性优先考虑ID属性啊。啊,那ID属性不方便就是如果啊,其次如果ID属性不不方便,其次考虑内幕属性,内幕属性就ID为什么不放呀,因为这个ID值或者被别的数据占了,或者这个ID值或者我这标签有可能有好几个标签,这ID值不能重复,那这个ID不方便了干什么,有内部啊有内部是吧。
19:12
Name的值数在一个标签里边,可以可以重复,知道吧,这是我们说的这那如果name也不方便吗?只有知道吧,只有只有什么,只有ID和name属性都不方便使用。方便,使用时考虑什么,才考虑使用自定义属性。这种考虑使用自定义属性。自定义属性也是,只要符合标志输入命令规则就行了。直是多少都无所谓,这是,那你说内部为啥不方便,内部万一被别的数据占了是吧。所以待会我们这个时候内蒙也不方便知道吧。
20:00
所以这是我们说到这个,那我们这个地方来看,我们说我们就什么,我要给这些标签扩展一个属性,那这个属性名叫什么,无所谓知道吧,那将来我要获取,我就是为了定位这些删除或者修改图标的。是吧,为了定位他们,给他们加属性,那这个时候大家跟我说将来怎么定位,去去找这些标签,找哪些这些标签name幕,或者叫什么,这个属性值等于我指定的值的那些标签,我就能获取到了,就这个意思知道吧,那这个地方大概我们用的话,用什么属性呢?ID是不是不方便呀,ID不方便,因为我有很多备注,那每一个备注的那个值,那么后边这个属性值都是一样的,所以ID不方便应该是重复,那这个时候我们考虑用name name不怕重复,知道吧,当然name现在也没被没被别的数据占用,所以我们就考虑name了,那怎么用内幕,给这些标签都加内幕属性,然后呢,都加上内幕属性加上,那这个地方大看值是多少无所谓了。
21:07
我为了建明之义,所有删除图标上面这个内幕值我都叫这个叫delete a,当然这个值叫啥无所谓了,所有备注后边删除图标都有一个内幕属性值,都叫delete a。那么将来我要选入这些标签的时候,这些A标签,我就找那些副标签下边的所有的A标签,哪些A标签name目属性等于delete a的这些A标签,这样我就找到删除图标了啊,那同样道理,以后我们做修改的时候,给修改图标也都加了内部属性,那它的属性值叫什么?都叫edit a就行了,知。我以后给修改图标加单击时间的时候去找这些A标签,哪些A标签内的值等于得edit a的那些A标签我就可以了,知道吧。
22:02
所以这是我们说这种思想,当然我们这个地方加的是刚刚动态拼出来的,刚刚动态添加的这条备注,他后边这些什么图标加上加上内了,那以前那些备注是不是们后边也得得加内,对那些备注他们后边这两个图标也得加入内部,那以前的在哪呢?对在下边呢。下边这些图标也都加上内属性,这些内幕属性也是一样,Name等于这个地方edit a,然后呢,这个地方也是name等于delete a delete a知道吗?所以将来我们要什么,只需要获取这些A标签就行了。哪些A标签name等于A的A标签?那如果可以修改的图标加设角找那些A标签,哪些A标志name等于对edit a的A标签,这样最重要就区别开来了。所以我们通过定义这些什么给修改图标和删除图标定义内幕属性。
23:12
他们的内部属性值不一样,这样就制造了这两个图标的区别了。是吧,所以这种就用咱们其实就是用咱们前面这个思想,就是给标签扩展属性这种思想,那牛扩展几个属性,随意扩展,扩展多少个都行,根据自己的需要知道吧,就这种思想其实说是非常强大的,知道吧。让标签给你保存数据,然后呢,定位标签这些思想,这是这个思想很强大,如果你只是学这些标签,其实你用的时候并没有那么强大,你要变换着用,要灵活的用,这才是最重要的。所以大你像他这有经验的程序员,基本上都是这样,他掌握了之后,所以说我们说编程的时候,你想要什么效果吧,我都能做出来,就这些语法,就是他们发明的这些这个语言呀,就是特别厉害发生这种编程语言。
24:13
这这这都是谁谁发明的,都是都是外国人,都是那外国人,他们这个起步早,他们发明的知道吧,你看这编程语言,咱们国内没有编程语言,都是用人家东西的。啊,所以呢,我们这个那那用人家的怎么了,那人家那人家就发展方面就占优势了。所以大家我们学编程,大家都要求大家有一定的这个英语基础,你得会点英语,不会英语学编程学不会学不会啊。所以这些这是我们也知道,但你要是咱咱们咱们也定了一些开发语言的话,必须学汉语才行,懂这编程都是写汉语跟写作文是懂,所以那那就好了,那咱们这个生产力我应该是提高很多了,所以那这时候大家你看就是人,因为人家开发的咱们得付出多这种加倍付出这种努力,咱们才能掌握他这种语,他这种编程语言。
25:08
这是我们这样的,包括人家定义这规则啊,啊,这是我们要说的这个这个地方我们就制造不一样,制造不一样之后呢,下边我们这个地方大就可以是吧,去找目标元素了是吧,目标元素这个地方应该怎么写?找这个标签下边的目标元素找谁啊A标签,然后呢,对中二是不是根据属性去过滤去啊对根据属性过滤中name等于叫什么delete a的那些A标签去这样就找到了,哎,这是我们这。这是这样,好,这样的话目标元素就找到了,目标元素找到下面,然后找到正好对翻个身,好这是我把它这样,然后呢,大家看将来这样我就选中所有备注下边的后边那页删除图标了,当用户不管点哪一个删除图标,都会执行我们这个函数,我们把代码就写到这里边就行了,那代码写到这里边,那写写在这里边干什么?两件事,发请求处理响应,发请求的时候有参数,首先收集参数,收集参数,那收集什么参数,那你看你后向后台发什么参数,就是这个备注的ID,就是说哪一个备注ID你点谁把哪一条备注的ID发到后台就行了。
26:42
那我点谁发包,我要获取这条备注的ID,怎么获取啊?我点谁把哪一条备注的ID获取,怎么获取。再稍微略强一点点。
27:02
对,删除图标上面,我们以前什么做查询的时候,P什么来显示每一条的时候,是不是我们当时已经考虑到了,为了做删除方面,是不是每一个图标上面都绑定了这一条备注的ID了,对各自备注ID了怎么绑定的,当时也是自定义的属性,你知道吧,还是这种思想,其实我们做备注的修改删除啊,主要是给大家演示这种思想,给元素扩展属性,这种思想用过来用过去,就是这个思想,核心的思想这一块就是就是锻炼大家这种思想,所以大家要理解这种思想,用熟练。所以大家我不管点哪个图标,我都获取它上面那个remark ID这个属性,把它的值拿到,是不是就拿到这个备注的ID了,就是那现在问题来了,我点哪个删除图标,我如何获取它上面绑定的那个remark ID那个属性呢?
28:00
怎么回去,对?对,我们说这个属性是扩展的属性,扩展的属性咱们给大家说了,是不是只只要不是Y6属性,自定义的属性是不是只能通过at t2a,那只能说at at t2是解块为对象里边定义的函数,所以我要什么首先获取到我点哪个图标,要获取这个图标的解query对象就行了。那现在是大概我们说在这个函数里边,我如何获取现在我点的那个元素的解块与对象,对这个函数里边是不是有一个内置对象叫Z啊,这个V就代表当前正在发生这种事件的那个元素,就是那个删除的图标,它的刀姆对象是不是这样吗?那有刀墓对象拿到解块对象好拿吗?对好,拿把刀对象转成结块,对象咋转,对到老符号括起来就行了,这就拿到你点哪个删除图标,拿到它的解块就行了。
29:04
那下边我们要拿它的什这属性,自定义属性只能掉对at t2,然后呢,获取哪个属性,把那属性没人写到这去了,对哪一个属性,对对,就这个瑞玛卡ID,这样我们就拿到ID了,知道吧,然后呢,定一个变量把它保存起来,这个就是你要删除的那一条备注的ID,这都是大家我们前面学的这个语法。好,这个ID现在已经有了参数收集到了,那这个ID大概是用户自己输的吗?不是我们自己从后台查出来,自己给他付的是,所以不用做表单验证知道吧,也不用去空格知道吗?所以就可以直接发到后台了,他一定是合法的,因为这是我们自己生成的数据。所以大哥那就直接向后台发请求就行了,所以我们这个地方直接向后台发送请求知道吧,那发送请求根据咱们的设计是个异步请求,那异步请求已经写过很多遍了,直接发就行了,阿贾克斯这就成了对象,这个对象一个URL,表示你要把请求发到哪儿去,那我们就发到这儿去了,这个ul,然后呢,这个地方直接写成行,然后呢,这个地方记出了data方,然后呢把我们的参数传过去,哪一个参数就这个对ID参数名,参数值入知道吗?然后呢,大家发过去,发过去之后来个type,然后呢,这个地方来个post知,然后后边来一个data,哎,这个地方来一个啊对,这个地方来一个叫data type type,然后呢,这个地方来一个叫什么对解算,这样前台的第一个职责就完成了,你不管点哪一个删除图标。
30:54
都向后台发这么一个请求,把这条备注的ID发到后台了,下边第二个知道处理响应,处理响应,那处理响应再回调函数里边处理。
31:07
然后在这个function里边有一个data塔,用来接收详细信息,那这个详细信息是什么?已经设计好了,就这么一个接森。那就看看这个阶森处理成功了还是18了,那来看看吧,判断一下A,如果是贝塔点Q的,如果等于啊,对,等于一,那就成功了,成功了怎么办啊?对,刷新备注列表,对,刷新这列表,刷新备注列,我们前面说了动态的刷了,你别再把这些备注,别的没动的备注再查一遍了,你就把这一条备注从页面上删了就行了。这一条备注是什么?就是这个div,把这个div从页面上删了就行了。把这个div为这个什么这个元素删,那现在问题来了是吧,从页面上删一个元素咋删。
32:06
Remove,对,Remove是吧,拿到那个元素的解块对象调一下remove就删掉了。其实这些语法都是大家以前学过。是吧,那吊水没好吊,主要是这个div,如何能拿到这个div呢?Div对这个什么,那他我要什么,要定位这个div了,要定位这个div了,那定位div咋定义咋定位它。我要定位哪个点,就定义定位每一条,备注这个div。其实有两种方式来定位,哪两种方式大家很容易想到一种方式叫什么,就这种方式对现在我点的是它,你看吧,我现在是不是点的这个后边这个删除图标啊,现在我点了他也换句话来说,我现在手里边有他什么,手里边那个this思就是你手里边你有这个对象吗。
33:01
有这个标签,有这个标签,我想找这个标签好找吧。好找啊,怎么好找?有两种方式,第一种方式,你现在手里边有他,去找他,你看他俩有关系吗?对,有关有什么关系,父子标签。而且是一个什么,他不是一个直接父子标签,是个间接附子标签,知不知道,但是是什么关系是吧?有他去找我,现在手里边有他,我可以找他的副标车,他的副标者直接副牌是谁呀。对,这个div是不是啊,找到这个div,再找这个div,再往上找,找它的复原是谁啊,对,这个div有这个div了,这不再往上找就找到这个div了,对,那我就找到它就行了,其实这种方式可以通过this找parent,再找parent,再找parent。就是稍微麻烦一点,就麻烦一点,知道这种方式可以知道吗?这种方式可以。
34:04
当然这就是对大家什么以前那种学解块的时候,父子标签的操作就那一套,什么那个parent或者children那些函数,你必须用到什么,很熟练了,知道吗?这是我们要这样,但是那派瑞和邱瑞那那那那两个参数说实话以后用的不多,就为什么,因为从父子关系上面找的话不好找,说说话不好找,特别是什么嵌套级别比较多的货。不好找,所以大家大家知道,万一让你用这种方式,你也要会把以前大家什么老师给大家讲的副子标这操作那一套东西看一看以前的笔记就行了,但是我们用的不太多啊,不太多我们不准备用这种方式,我们准备用另外一种思想了,哪一种思想还是刚才给大家说的扩展属性的那种思想。扩展属性的思想。怎么扩展属性大师长,我现在我想定位这个标签,想定位每我点哪个删除图标,定位这个图标所在这个div,我想定位它去怎么定位给它扩展属性。
35:13
扩展属性,我们要定位这个标识用哪个属性对,优先考虑ID。只有ID不方便了,再用别的ID在这个地方方便吗?方便吗?看看,那你看我们说按理说,按照我们的设计,是不是每一个div都应该有一个ID值啊ID值那每一个div一样吗?不一样,对不一样,是不是这个ID不太可能重复。兰格中锋是不是就方便使用啊,方便使用,所以我们可以考虑去ID属性,给每一个标签,就给每给每一个这个div加一个ID属性,这个ID值怎么设置呢?对,因为每一个什么标签,就每一个标签div都有一个ID值。
36:09
然后呢,ID值大家又不重不重复,那我们说每一个备注正好有个有一个ID,那这个ID每一个备注的ID有又都不重复,所以我索性把这个值呢,ID值就直接设成各个备注的ID值就行了,这样大家都有各自的ID值了,都有各自的这个每一个div都有自己的ID了,而且每一个div的ID都不重突,知道吧,那你要是都给他们起上ID值之后,这你比如说那怎么起,咱就这边给他加上就行,那加上那这个ID值从哪取啊,对data塔点,它data塔点叫什么IDID上就行了,就是你在这个地方大哥怎么取的,在这地方怎么取啊,这是我新添加的知道吗?那这样的话,大哥你加上它有什么好处,加上他就这样我我我就可以以后定位这个div好定位了,怎么定位?
37:02
我以后要删除一个备注,是不是点这个图标,点这个图标点完之后我是不是能获取这个属性啊,这个属性里边获取的就是这条备注的ID。那通过这个备注的ID拿到了,我是不是就可以找什么对找这个div了,怎么找,找ID值等于这个ID值的那些div是不是就能找到了,就能找到了,知道吧。就是通过这个ID值,我点它我能获取到这个ID,获取到之后去找div,去找哪找哪个div,找ID值等于这个值的div,这样我就能找到每一条备注那个div了,知道吗。所以这时候我们说到这。啊,这个地方我们借助什么?还其实最主要那个思想,还是那个扩展属性,在我们这个扩展属性的过程中,我们借助了正好每一条备注对应一个div。
38:01
那每一条备注对应的div,再一个,每一条备注它的ID值都不一样,正好把备注的ID直接设置成div的ID了。然后我一点某一个什么修改图标,又能获取到这条备注的ID,然后就能获取到这个点,这是我们这个思想。所以这是我们说这个思想。好,大家在对于我们这个例子而言的话,直接这么写其实就行了,大家大家以后在开发的过程中,有可能还这样做一些复杂的功能头,假如中间还有一个标签。也是每一条备注都对应一个这个标签,我以后也要定位到这个标签去。那你让我怎么定位?按照我们这个思想,也是给这个标签加一个ID,它的值等于几?那每一条备注都有一个这个标签,它的值是不是按理说也应该设置这个什么,这叫备注的ID啊,这个时候就有问题了,有啥问题,是不是这个div的ID值跟这个标签的这个ID值就重了。
39:06
就重了,在同一个页面中两个是吧,元素的ID值重了,这是不允许的啊对对,那怎么办?对,那那那就那种不用ID了,用name用name操作不好操作啊,ID将来操作获取这元素好操作呀。对,那那怎么办呢?自定义一个属性,这个属性也行,但是操作时候也麻烦呀,得用中括号啊,我就想用ID啊,因为它符合这种什么ID值不重播,对对我们用啊,我们经常采用这种思想干什么?这个标签里边这个标签一般不太可能是div了,如果它不是div,它是这样,别的标签是H5等等,这些标签我可以干什么,这个值呢,虽然给ID绑定了干什么,前面再加个前缀,如果是你div,那叫啥?前面加个前缀,这个前缀叫啥无所谓,然后呢,跟这个ID值拼在一起,假边假如下边有个标签,这个标签假如它不是div,假如它是H5,那它的ID值就等于H5,下划线给这个ID拼起来,这样的话就能减少ID的冲突的几率,大家明白这意思吧,对,这样我们当然你以后到公司,公司里边看人家,人家写的代码经常有这种。
40:30
带,有的时候有同学不理解,说为啥带这个东西,看着看着自己看晕了,懂吗?啊,所以这些都有原因的,这些都是他们那些成员,我说经过长期的开发总结出来的这种代码好维护。所以这是我们说的这能好,这样的话,大概我们每一个div都加上ID了,ID值都给每一条备注的ID保定这是我们新添加的一套备注ID,给他加了一个ID了,以前那些跟什么以前那个这些备注是不是他们那些DV也都应该给自己的ID绑定了。
41:10
也是这样,所以这个地方我们也给它加ID,哪个地方在这个地方,对这个地方,然后呢,这个地方可以都给它加了ID。它的值从哪取div,对div,然后呢,是不是从每次变出来那个循环变量里边取啊对ID就行知道了。这样的话,大家每一个什么对,每一个备注那个div都跟各自的ID绑定了。绑定完了之后怎么办?现在我点它我有ID了,我就去找那些div,找哪些div ID值等于我点了这个上面那个ID的那个div,找到之后1REMOVE就行了。所以这是我们说的这好,那下边再看我这个地方,我就刷新的时候,我一找我删除的那个div去了,那找的话高去找找哪找哪个div对井号大括号井号这个什么这个Dollar符号井号,然后里边是不是写那个ID值啊,那个ID值是不是都有一个div下划线,都有div下划线后边呢,对加号加上谁。
42:25
对,加上你点这个备注,备注这个图标上面是不是绑定那个ID值啊,那个ID值在哪呢?对,上面有就他啊,这样就找到你点那个删除图标对应的那个div,那条备注的那个div了,嗯,哎,有同学说了,哎,老师这个选择器怎么还能这么写啊。对,可以是吧,这也可以,这个选择器是个什么?以前我们写的选择器都是字符串,现在是个表达式,对对字符对对,现在也是字符串运算结果,这个字符串知这个表达式运算结果,其实大家以后你用的比较复杂的业务的时候,其实这个表达式还可能更复杂的。
43:10
它里边可能会写一个很长的一个表达式,知道吗?很复杂的一个表达式,但不管多复杂,解开位真正执行的时候,它先把里边这个表达式运行出来。你不里边可以写任意辅导。但是最终得到的结果必须有个合法的选择器。对合法的选择器,这个选择也不一定非要是ID选择器,也有可能是class选择,也有可能是父子选择器,也有可能是其他的组合选择器。更复杂的选择器随便只要是个合法的选择器都行。这张这张你随便写。多复杂的行,他先计算里边得到一个合法选择题之后,哎,再根据这个选择器去找到相应的元素,去找到之后怎么办,调函数懂吗。我们要删除这个div,怎么删remove,对remove remove就是从页面上直接删掉某一个元素,从页面上就删掉了,就从览浏览器页面上,就把这个从这个这个什么页面结构上面直接移掉,嗯。
44:17
这样我们就删掉了。这样的话我们就刷新了这样。好,这是我们这样,然后呢,下边呢,如果删除失败二这样删除失败提示信息,对提示信息,那这个地方来一个a lot,然后呢,这个地方来一个就message是data.message对吧,所以这时我们说的这来看,其实代码你看吧,不难,你看吧,主要是这种思想。你要这种思想掌握了以后,到公司里边开发,基本上也就这样,也就这样动的,他不管怎么说基本上就这样。好,这是我们这个前台项目啊,前台后台都写了,下边就可以测一测,删除备注了,好,下边呢,启动服务测一测。
45:29
然后呢,这个地方来一个,然后看,然后呢,YF12层点进来,然后呢这个市场活动,然后呢大家看查看市场的明细,然后你比如说这些备注,假如有有些备注不想要了,我就给删了,那删你比如这个第三个我不想要了,那就点它啊,你点它向后台发请求了,那把这一条获取到这个ID向后台发请求,那后台根据ID把这个备注删了,删除成功了,返回到返回到前台把这个div就删掉了,你知道吧,你点完你看删掉了看吧。
46:05
然后呢,你看这个零四我也不要了一点删掉了,零五也不要了,删掉了。那你要再进来还有没有。操作数据库的,对操作数据库,数据库里边没有了,你再进来查就查不到了,那些备注也就没有了,因为我们做什么查询明细的时候,这一块都已经又从后边又又后来数据库又查了一遍,你这样从数据库边上了,这边也没有了。好,这样的话呢,我们这个关于这个市场活动备注了,来看这个删除,我们就给他做到这了。下面来看这个修改市场活动备注。他的需求到底什么样,他的需求上说用户对这个什么备注,假如他对这个备注的内容有意见啊。对你的意见又有意见了啊,我说你说的这个是吧,有点不对,我想给你纠正一下,那怎么办?就点这个地方知道吧,你点它弹出了一个小摩擦窗口,知,这个摩擦窗口上面也有一个输入框,也有这么一个表格,这个输入框里边显示什么,就显示这个备注,原来的内容显示到上面,然后这个地方有个更新按钮。
47:17
然后用户就可以改里边内容,对它的内容进行改,改完之后呢,一点更新按钮,向后台发请求,知发请求干什么,把这个备注的修改后的内容,当然还有这个什么,这叫备注的ID一起发到后台。后台接收了之后,到备注表里边把这条记录更新了,更新完了之,完了之后怎么访问到前台。那如果成功了,怎么把摩擦窗口关掉?关掉之后怎么办?刷列表,刷列表怎么刷动态的刷你修改了哪一条记录,你只你只刷这个div里边内容,别的这些没动的你都别给人家动,你动的话还是那样,用户体验就不好了,后台服务器压力就大了,你只改了这个数据,你只改它就行了,好,那刷它怎么刷,该变的数据都变了,哪个地方变了,备注的内容变成修改之后的,还有什么?对这个修改时间也得变,改成修改时变,修改者是不是也得变,对也得变,其实就刷新这个地方,刷新这个地方,刷新这个地方刷这个,刷新这个,把这几个地方刷了就行了。怎么刷,动态的刷,用GS动态的刷,知道吗?
48:33
这是成功了,失败了,当然提示信息模特上我不关闭,这个地方不用说了,这时候我们说了他大概这个需求就这,当然我们他这个需求文档上也是这么描述的,修改市场活备注你知道吗?用户在市场活动明细页面点击修改按钮,这个备注的这个图,这个市场活备注的图标,弹出修改市场红备注的模态窗口,用户在修改市场红备注模态窗口填写表单,一点击更新按钮,完成修改市场红动备注的功能。
49:03
知道,然后他这个地方有些特殊要求,他说修改的时候一点更新按钮的时候,备注内容不能为空啊,当然我们创建备注的时候都不能为空,那修改的时候肯定也不能为空,你知道吧,再一个修改成功之后关闭把大窗口。刷新备注列表,就是刷那一条记录就行了,再一个修改失败提示信息模在窗户不关闭,列表也不用刷新,这是给咱们刚才说的这个。流程基本上是一样的。这是我们这个关于修改备注的这个需求,我们就给大家分析到这,好,咱们还是接着做市场活动最后一个功能了,这个模块,这叫一个模块,就一个菜单就进来,就是一个模块,模块下边有很多功能,知道吧。这样,那我们来做这个市场活动,这里边最后一个功能,这个功能就是修改市场活动备注。那我说市场活动备注这个表,我们说任何一个表增删给查一定会有,你知道吧,那我们这个地方查询备注做完了,就查看明细的时候,就把这备注查出来,再一个添加备注,删除备注都有了,下边一个修改备注。
50:14
好,下面我来做这个修改备注这个功能了,那还是同样先看看到底做成什么样子,先分析需求,他的需求就这样说,用户他对某一个市场活动备注我又有这个又又有意见了,对他这个意见又有意见了,他想修改一下,那修改一点,这个地方弹出来一个模擦窗口,在这个摩擦窗口上面有一个表单,这个表单其实就是这一个输入框,那备注内容就一个内容,然后然后在这个内容,在这个表单里边显示这条备注,原来的信息都显示到这儿。然后上面有个更新按钮,用户就可以改的内容,改完之后一点更新按钮,想获得发牛把这条备注就改了,那改了改成功了,模带窗口关闭,让下边刷一下,就像我们咱们昨天说的刷了。
51:01
只刷这一条动态的刷是吧,然后呢,如果失败了,提质紧急不关也不用刷了,这大概他这个需求好,他这个需求就是昨天我们已经最后呢,一会儿我们已经说了这个需求了啊,其实大家给咱们刚才说这个流程基本上是一样的,修改那市场红的备注,修改上备注就道好,大家对这种需求有个大概了解之后呢,下边我们一块儿来设计一下,看如何去做好看这。
我来说两句