00:00
大纲CTRL写完,后台这些代码都写完了,知道吧,Map service c都写完了。那后台写完了,下边就前台了,写前台爷们。好,前台页面的卡,从流程上面来看,前台其实就做两件事,第一个发请求,第二个处理响应,知道吗?发请求的时候有参数,收集参数需要做表单验证,做表单验证。然后呢,处理响应一般来讲都是在回调函数里边处理的,知道后,所以首先我们来看看什么时候发请流,在我们这个地方,那什么时候发进流,根据我们这个流程,他这个需求说了,用户打开创建市场活动模态窗口之后,一填写表格,填完之后一点保存就发请求了,所以下边我们要做的时候就是给保存按钮加单击时间,知道吗。就是给保存按钮加单击事件,但是我们说大看在加这个单击事件,在加这个单击事件之前,首先这个摩擦号你先能弹出来,那弹出来怎么弹一点这个按钮就弹出来了。
01:00
那你说这是美工不帮我们弹了吗?这是美工帮我们弹的,美工怎么弹的,我们前面已经看了,是不是他给这个按钮加了他炉属性了,他就弹出来了,知道吗?但是他那种方式弹我,你说一般来讲程序员不会用它,为什么它那种方式不灵活,怎么不灵活了,你必须点这个按钮时它才能弹出来。那你说我们这个地方不就是点按钮弹出来吗?关键是如果在弹出来之前,我想干一些我的事,我想执行一些我的代码,它能不能执行一点这个地方我想弹之前做一些初始化工作,一点它能弹出来吗?就能,我想执行我的代码,能能执行吗?执行不了,所以大概我们实际开发的时候一般都是怎么办啊。这个地方一点,它弹摩大双手的时候,我们不让他谈,不让不用他给属性团,因为他给手上不灵活,我想谈之前做我的事,我不能做了,就这个意思,我想执行我的代码,他不能执行了,那干什么呢?这样我们准备这样他一点这个按钮,我们准备执行我们的代码,我们自己给他弹。
02:08
那自己弹怎么弹,咱们前面给大家讲摩擦撞手弹,摩擦撞乳胶两种方式,第一种方式他够属性,美工喜欢用的,第二种方式程序员喜欢用的,怎么怎么他。是不是一调那个什么GS函数就谈了,我们自己给他谈就行。那我们自己谈有什么好处,我在谈之前我想做我的代码,我想执行我的代码做一些中转,我可以做知道吗?所以一般来讲,实际开发的时候我们都自己弹,那怎么办呢?是首先要弹簧的任务,给他加一个单机时间,他一点这个地方执行我们的GS代码,我先做一些初始化工作,然后再传播到任务就行了,所以下我们要做的是就是给创建按钮加个单击事件就行了,所以下边我给创建按钮加个单击时间,那这个创建按钮在市场活动主页面上面找一找市场活动的主页面,大家要跟上我们的思路啊,然后呢,找一找市场活动的主页面就好,上面有个创建按钮。
03:04
创建按钮找一找创建按钮,然后呢,我们这个地方大家找一找搜一下啊创建按钮,然后呢,就这个按钮看到吗?我们准备给他加单机时间一点,它执行我们的代码,我们的代码自己弹模的状口,大家看这是美工。用踏购属性实现的弹摩特,我们说他这种方式不灵活,加上之后一点他是能弹出猫,我想做些出软工作做不了。所以我不准备让他弹,那不准备让他弹怎么办?把这两个属性去掉懂吧,那去掉之后那一点的时候弹簧怎么弹,我给他加单机事件,然后呢,直引我的阶代,我在我接代码里边行吗?那给他加单机事件怎么加?我们说两种方式,第一种方式最原始当中叫什么?对昂克雷克,我们说这种方式我们不推荐啊,为什么GS代码和atml代码混在一起,我以后维护不好维护,那我一般都是什么?在入口函数的统一给元素加试件,对,那在入口函数加试件的话,那我得什么?我将来得选中这个元素,选中元素得使用选择器去选。
04:15
那选中呢?用选择器,用什么选择器?对,理论上什么选择都行,但是ID选择最简单,所以我们用ID选择器,那我要给这个创建按钮加个ID了,这个ID你随便提建名之意就行了,那它既然是创建市场活动,我也叫create activity,它既然是个按钮,我就叫button。然后呢,在入口函数里边,当页面都加载完了,我给这个元素加单击时间行,就给这个按钮,在这里边加单击时间。来这个地方来给给什么给创建按钮,创建按钮添加单击时间这样就行了。那加单机事件怎么加,又用到我们以前那种语法了,给元素加事件首先呢,要选给哪个元素加,要选中那个元素,选中那个元素就是拿到那个元素结块的对象。
05:12
那我们这个地方选中的话,用ID选择器直接这么选就行了。然后呢,加单击事件,调视角函数,单击事件就是可离的,知道吗?然后呢,在这个函数里呈现参数,这个参数本身就是函数表示,当这个按钮上面发生单击事件的时候,自动执行这个函数,在这个函数里边干什么,我们说它一点,这个创建的时候我们要弹出摩擦窗口。弹模态窗口,那这个地方我们就可以弹出模态窗口,创建市场活动模式窗口,创建市场活动的模态窗口,那弹这个窗口大概怎么弹?以前用他购他购属性弹,现在不用他购属性怎么弹?就这个王大壮,我要扛他怎么扛?
06:00
前面跟大家讲了,你要谈某哪个模态窗口,是不是把那个div的解块对象拿到调model函数就行了,所以大家别忘了,然后呢,这个地方啊,我要弹这个模特窗选中他。弹的话,掉一个函数,哪一个函数model这个函数知吧,然后在这个函数里边给他传一个参数,这个参数你要弹出来传什么参数收一下知吗?你要是关闭了拍的知吗?那我这个端要弹,那就收一下,这这样的话我就弹出来了,就吧,将来你点那个按钮,它会执行这个函数,在这函数一执行,它那个模端我就弹出来了。这种前面给大家写过了啊,那你说这种谈跟那种他购属性谈有什么不一样吗?不都是谈吗,那种结果一样,但是我们这个你这个地方谈的话,你在之前谈之前你想做一些其他的事儿,你可以执行一些你的JSS代码,可以做一些初始化。
07:02
可以做一些什么初始化工作,可以做一些重要化工作,什么初始化工作,你在里边可以写任意的JS代码,任意的S代码,知道吧,你可以写,你可以想干什么干什么,直接往你的代码初始化好了,然后再谈论,这样就可以了,这样的话呢,我们就可以了吧,这是我们说的这种方式。你一点它,他肯定就弹不了摩托桩了,知吗?好,这是我们要这样啊大哥,当然你说老师我们这个地方可以做什么初衷,我现在先不写,一会儿我用,到时候我再写知道,好,这样的话大概我们这个就弹出来了,弹出来之后那用户就可以填写表单了,该选的选,该填的填,填完之后一点保存按钮就向后台发保存的群主了,所以下边我们就可以什么给保存按钮加单击时间了,所以下边继续拉。下边就会给保存按钮,保存按钮添加单击事件,单击事件,嗯,单击事件是,那可以保存按钮加单击事件,首先找到保存按钮,找到版件保健按钮在哪,它一定在这个摩态轴上面了,来找一找它一定在最下边哪个地方,反正就这个地方给它加一个单击时间就行了。
08:22
但是我说这个按钮上面,大家你会发现它有一个属性叫dismiss属性,前面我给大家介绍模态窗口的时候给大家说了。这个属性的含义就是说,当用户一点这个按钮的时候。它会自动把这个按钮锁在模特上给关掉,那我们这个地方再看我们说一点啊,它是要关掉,但我们是不是每次都关掉,不是根据需求说了创建成功了把它关掉,创建失败了呢,我还不想关了,但是如果你这个按钮上面加了dismis属性,不管成功还是失败,他都给你关了,所以我们这个地方说不让他关了啊,去掉就行,去掉你点它他就不会关了,那不会管你说老师创建成功后就想关,怎么一会儿用GS代码手动的关好,这是我们程序员最常用的知吗?这种方法好,这样的话大家这个按钮给他加一个单击时间去了,你看加单机实验,我们也是在入口函数统一讲,那我们说也是给它加一个ID。
09:21
那加一个ID,这个ID你随便写了啊,我就建名,这叫c create,然后呢I保存创建的市场活动按钮button知,然后呢,给它加一个单击事件,大家要跟上思路啊啊,然后呢,这个地方来给它加单心射线,同样选中它拿到解块对象,然后调视角函数,可这样就行了,然后呢传个参数,这个参数本身是个函数表示,当用户一点这个按钮,会自动触发这个函数。那在这个函数里边写我们代码就行了,知道吧,那写我们代码干什么?两件事,第一个发请求,第二个处理响应。
10:04
发情的时候如果有参数,那首先得收集参数,因为这些参数散落在页面的各个角落,那么将来你要发请的时候,把这些参数发到后台,你得先把他们拿到。拿到才能才能放,所以下边要收集参数,收集什么参数,那在我们这个地方就是表单里边这些参数值。把这参数值拿到就行了。拿拿这参数值,咱看怎么拿。对,是不是拿到这些表单的这输入组件这些标签里边Y6属性值就行了,对那就拿吧,这个地方那一个一个拿吧,首先所有者那取到所有者的值,所有者是下列列表,哪一个下列表就这个下列列表,然后呢,我来获取它的值就行了,那获取它的值大看怎么获取。Dollar符号ID选择器是不是拿到解块的对象了,然后拿到它的Y6属性值怎么着?
11:00
是不是VL啊,就拿到他的Y6属性值了,知道吗?他选中谁就拿到哪一个option的那个Y6属性值了,知道吗?好,然后呢,这个地方来定个变量结束,这个地方我就叫O了所有者,这样的话我们就可以了,这时候我们说的这个所有者就拿到了,下边继续来,还有名称,对,把名称拿到拿到拿到名称这个地方来市场活动名称就这样,这个输入框本值,把这个值拿到就行了,然后呢,这个地方来个Dollar符号啊,然后呢,我们这个地方拿点VL拿到它的值就行了,这样了,然后呢,这个地方定一个变量来接入它name的好。当然我们说这个地方是用户自己输的,一般自己输的我们都什么,他有可能会什么加上空格,我们这种这去个空格,只要是自己输的全部都去空格。好,这是我名字,市场活动名字,还有谁开始日期,那就一个一个获取呗,开始日期就这个,但一般来日期一般来讲不是泰time姆是指十分秒日期,一般这他美工,它这个美工做的不好,它的命名再看不是建明之意的开始日期,把他的值拿到赢,那拿到他的值这个地方点到了时候,然后呢这个地方,然后呢,这个这个地方来一个。
12:28
啊,拿到它的值表VL暂停,然后呢,定义的变量把它保存起来,然后呢,这个地方来个啊大的贝这样就行了,那你老师这个地方需要不需要去空格,它也是15空。但他虽然虚入空出五框,一般来讲这个地方不让用户自己出,就为什么不让自己出,因为这是日期,我们前面给大家讲了,日期和时间都有格式的,格式在一个项目里边一定是统一的,他不可能那么不是统一的,你说这种是日期,有的是有的人这么写,有的人这么写在一个系统里边,那这样格式就不统一了,不统一以后你操作不好操作,那所以格式一定统一的,那我们这种目前来讲,国内的这种什么日期和时间,大家习惯都这么写。
13:22
都用这种格式,那这种格式你要让用户自己输的话。那他不一定输出什么格式,有的人喜欢这的,所以日期或者时间不可能让用户自己输的,那都那都是干什么,都是什么做成日历的,是怎么日历一点,它出来一个日历。然后这个日历用户为什么一选年月日,然后选完之后把那个日历关掉,自动的根据他选的结果,自动我们给他填了,那我们给他填。那我们的这个格式就统一了,知道吧,所以这个地方将来这日期都做成日历,知道吧,做成日历不可能让他自己输,知道吧,啊所以呢,日历的话,那就不是让他自己出了,所以不让自己出肯定没有空格。
14:07
所以那这个地方我们就不用去公园了。当然这个日历我们现在先不做,一会儿就到后边我们一直做完,这都做完了,我们再给他讲这个日历,好,这是我们说到这个开始日期,下边还有一个来讲结束日期,同样也得获取到值,它这个值带上它这个命名也不好,这能那个对方,然后呢,这个地方也是它知道吧,好,那这个截束日期把它也拿到,把它的值也拿到这个地方,Dollar符号它好,然后呢,这是结束日期,点2V,然后呢这个地方就行了,然后呢定一个变量把它保存起来,摁到这知道吧,好,这个地方也不用去共格,因为这些都不是让他自己输的。好,这是我们这样下边继续来看还有什么成本是吧,成本这个地方来获取到它,然后呢,这个地方同样道理,它也是获取它的值,拿到它的解块,对项点VL知道,然后拿到之后啊,定个变量把它保存起来抽知道吗?这是这一条,市场活动预计成投入多少钱知道吧?啊当然我说这个地方是用户自己输的,一般来讲缺空格推幕一下就行。
15:14
知道吗?这是我们知道知道吧,还有大纲继续拉啊,还有描述,描述也要获取它的值,哪一个地方就这个,它这个地方,它这个名字命名也不好description嘛,然后呢,这个地方description,然后呢,把它的值拿到就行了啊,当然这个名字叫啥无所谓啊,当然我们最好给他规范一下,这呢你的代码以后维护好维护,然后呢,这是拿到他的结块,对行拿到它只是点2B这样就行了。然后呢,定一个变量把它保存起来,V2叫黑C这样,然后呢,这个也是用户自己输的去空格点二,然后呢,可这样的话呢,我们这个这些值都拿到了参数,都收集到了六个参数。
16:06
好,这时候我们这样下边继续来,这些参数将来要发到后台保存数据库里边,那你要发之前首先保证这些数据肯定是合法的,如果不合法请求都不让发,如果你发了数据不合法,发到后台也没意义,所以那前面发请求之前先做表单验证,表单验证,那表单验证做哪些验证,需求说的很明白了,需求说了大啊,首先大家看所有者和这个市场活动的名称不能为空,如果为空,在这点保存请求都不让发。这是他的需求,这是他的需求要求的。所以我们这个段先判断一下是否为空,所有者要看看是否为空,那如何判断所有者是否为空,怎么判断?对,给空字符块比一比啊,用双等号比一比,我们说在GS里边判断任何两个数据是否相等,都用双等号,然后呢,这个地方来,如果等于空字符转,那就告诉他,然后呢,所有者不能为空,所有者不能为空。
17:13
对啊,所有人不为公,那提示完了之后再看后边代码是不是都没必要执行了,对,直接return,把整个函数就结束了啊,那如果不为空不为空,这里边进不来,进不来干什么?继续往下走,那来进,再进一步的判断内内姆是不是是不是为空知道吧,然如果它也等于空车。如果它等于空,那这个地方给他提示说名称也不能为空,然后呢,这个市场活动的名称也不能为空,名称不能为空啊,然后提示完了之后,后边代码也都不执行了,委托人就行了,行吗?好,这事我们说到这儿,下边继续打卡,还有什么,他说如果开始日期和结束日期都不为空的时候,做下边这个验证。
18:00
结束日期不能比开始日期小。他俩都不为空的时候,再做这个言论,否则如果他俩为空,或者他俩有任何一个为空,我们都不用做这个判断了,知道吧。因为为为什么,因为从什么时间开始都不知道,那么只有一个结束时间,那这个时候我们也没法判断。然后呢,再一个,如果时间有开始,什么时间结束不知道,也没也不用判断了,只有他俩不为空的时候才判断一下,它不能比它小。所以这个地方我们来判断。那判断的话,这个地方到底要不要判断,首先看看这俩是不是都为空,或者是不是都不为空,都不为空在判断,否则只要有一个为空的,或者俩都为空就不用判断了,那都不为空在判断,我在这里边判断,那我来判断这俩是不是都不为空。那这俩都不为空,如何判断呢?对,不等于空字符是吧?判断两个在GS里边,判断两个数据是否相等,用双等号,判断两个数据是否不相等,用什么用不等于。
19:10
啊,它不等于空,还有一个呢,对,并且这个A的也不等于空,这个时候我在这里边判断。否则只要有一个为空的,这里边儿就不执行了,就这意思了,好,下边我们来判断,如果他俩都不为空,那就判断它是不是比它小,那如何判断它是不是比它小呢?对,这是俩日期是吧?那如何判断俩日期谁大谁小?对,两种方式,第一种方式把这两个什么,把他俩都转成data对象,然后获取它那个什么get time那个什么,1970年那个毫秒述。
20:01
然后比较毫秒数是不是就可以了,就可以了,但是这种方式比较麻烦,怎么麻烦了,但你看现在我们获取这两个日期,他俩可不是data类型的数据。他俩是什么对,现在是字符串,你把字符串转成对塔六系统咋转?但跟着我想这些代码都是大家以前学过的是吧?把一个字符串转成data类型的对象发串。为什么转成data对象?我要通过data对象拿到那个毫秒数啊,所以你得转成data对象,如何把字符兆转成data对象?咋转?那你说老师用simple data format,有同学说可不可以?Simple data能不能把把把字符串转成data?为啥不行?啊,格式格式咱们都统一了,就按照YYMMDD那种格式。
21:05
然后进去对进。对,直接溜一个data塔,把字符串当这种当参数放进去,这种方式可以是吗?这种方式可以啊,为什么不能用simple data form?是不是改变?合适的。格,格式都是统一的,统一都是YYMMD。这俩获取字符串,这俩字符串也是获取的,也是YYDD的,我哥说。因为什么?Simple data form是什么?Java里边的语法是吧?你现在写的是Java吗?不是Java,对,这是GSGS里边可没有simple data form,所以在GS里边把一个字符串转成贝塔,对象咋转?那有的说GS里边有data对象吗?GS里边有吗?GS里边也有。
22:06
对怎怎么办?对,在GS里边直接溜一个DATA6,你说这是系统时间呀,对,把它里把这些字符串里边的年月日都取出来,取出来之后呢,在GS里边这个data塔里边有什么?有好几个属性,有个一二属性表示年,Data属性表,那么表示日期,还有什么这个月份month表示日期,分别复制给他相应的属性里边,这样就行了,大家能理解这个意思吧,就这这个地方没转过吗?对,用个变量接收这个接,接收这个对象,把那些什么,把这些字符串里边年月日都取到,分别附制在相应的属性里边就行了,知道吧,所以大家这些要会啊,以后你也得操作,这虽然我们这个地方不准备用这种方式,但你得会,我们说我们做这个CRM项目,如果只是做功能做项目,我可能说一星期我就给大家讲完了。
23:05
当然我们说做这个项目,我们仅不是不是仅仅做这个项目,是把以前的学的那些几个月的技术都回顾一遍,熟练一遍,如果仅仅做项目,那那那那我们就没有必要设置这个阶段了,那做项目还不简单吗?仅仅做功能,所以大家要跟上我们思路,把以前的什么学的那些技术翻过来,调过去,反复的什么巩固一下,这样你才学后边技术就有基础了,否则这些技术学的模棱两可,不知道的话,或者已经忘了学了,你不白学了吗?我们这个阶段的作用就是,所以大家你说不要盯着功能,功能很简,太简单了,知道吧,咱们一星期就把这些所有功能做完了,知吧。所以大我们不是专门只做功能,所以大家跟着我们这个思路走,这些都是大家以前学过的功能,好这样的话,大看我们说我们NEW2个data,把里边的年月日十分秒都就年月日,它它这边data只有年月日嘛,都复制给相应的属性就行了,知道吧,拿到两个data对象直接get time,各自拿到各自毫秒数,一比它俩大小就知道了。这种方式麻烦吗?麻烦对怎么麻烦,你一个data还得把它里边年月日都取到,那取到它里边年月日咋取?
24:20
对,它本来是个字符串,是不是你得拆解字符串,拆解字符串咋拆拆解对please是吧,按这个横杠是吧,拆一下就行了,所以这就比较麻烦了是吧?所以我们不准备用这种,但是这种方式肯定可以是吧。肯定可以,但是我们不种方法,那我们准备用哪种方式是这样,他们是字符串,字符串也可以比较大小,字符串怎么比较大小,在GS里边任何数据都可以比较大小,因为GS是弱类型的语言。是吧,那字符串比较大小怎么比较,跟我们以前讲的一较字符串比较大小,逐个字符比较,这个字符串的第一个字符跟另一个字符串的第一个字符比较一样不一样,一样比较第二个字符啊,然后也一样继续往后边比较,直到比较一个字符不一较,谁大谁就大,知道吗?所以我们就准备什么使用字符串的,字符串的大小不用转贝塔了,来什么代替什么来代替,然后呢,这个日期的日期的大小知道吧,就是因为GS里边这种字符串比较的大小的规则懂道吗?这样比较就行了,所以现在呢,我们就来看看这两个字符串的大小,因为它们的格式都是统一了,所以比较这两个字符串大小就行了,看看这个字符串是不是比这个字串小。
25:42
如果它比它小,就说明这个日期就比它小,你知道吗?所以这时我们说,那如何比较这两个字符串的大小呢?两个字符串比较大小大比较。对,在GS里边还是这样弱类型的语言,比较任何两个数据的大大小都是用什么大于号或者小于号,大于等于号或者小于等于号是吧。
26:10
啊,我们前面用,我们前面给大家说了两个,在GS里比较两两个数据,任意两个数据的大小是否相等用双等号,是否不相等用什么。叹号对不等号比较是否大于用吗?大于号比较是否小于用,小于号比较是否大于小于大于等于比较是否小于等于用小于等GS,若类型等于都可以用直接比较就行了,所以我们这个来看啊,这个字符转是不是小于star这个。如果小于他,那这个地方就不合法,不合法提示点击,然后呢,这个地方来一个告诉他是吧,让结束日期,结束日期不能比开始日期小知道吧,然后呢,提示完了之后,后边代码都不执行了,Return就行了。
27:01
那如果说他不比他小,不比他要好,那就这里边就进不来啊,进不来那这个地方就提升不了,那么这就继续往下边走了,知道吧。这是我们说的,这样就可以了,好,这是这个需求。就两种方式,我们说第一种方式转成data,然后那种方式比较麻烦,直接比较增,这第二种方式比较简单,所以我们就用这种好,这是我们说的这个这个。表单验证这个我们就给他说到这儿,下边这个。这个成本,这个成本不能随便写,只能是非负整数。零也行。那么正整数也行,除了这些之外,这个地方都不能填,填个字母不行,填个汉字不行,填个小数不行,填个负数也不行,只能是非负整数,这个地方怎么怎么验证。对非负整数怎么验证?
28:05
其实这是一类验证的话,怎么一类验证,让你用户输入一个字符串,这个字符串只能是什么样的什么样的字符串,这是一类验证,你比如说他看我们以后还会用到什么,让你用户输入一个字符串,这个字符串只能是个合法的邮箱,合法的网站,合法的身份证号,合法的手机号,合法的IP地址等,合法的邮编等等这些。合法的,那么非负整数,合法的正整数,合法的小数,合法的负数等等这些,这是一类。让你只能什么输入一个字符串,只能是一个合法的指定的字符串,这种验证咱都用什么验证,对正则表达式是就正则表达式对正则表达式,这都是大家我们前面这些知识用到哪一块,把哪一块知识那么熟练它总结好它就行了。
29:04
以后用到时候好用啊,你要如果这个阶段错过这个阶段的时间,再也没有机会帮你老师帮你梳理这些知识,以后永远你一辈子也没有人帮你梳理这一块,知道知道吧,你到公司转更更谈不上了,对,错过就错过,你就没有人给你梳理了,后边阶段就直接用了,知道吧。知道吗?我们这样就帮大树语,我虽然不给大家讲这些知识,但是我提到了,你就应该想起来,你应该回顾起来,那回顾起来,回顾回顾,不回顾不起来怎么办?那就是因为你你没掌握,你掌握的不熟练,那你干嘛?你要往前面翻了,翻翻前面的笔记代码,视频知道吗?要总结了知道吗?不总结,学了跟没学一样,知道。不会用知道吧,学了跟没学一样,下面我们来看正道表达式,那现在的话我们说正道表示我们前给大家说了,它是一种什么语言,叫表达式语言,它也有自己的语法啊,它正则表达式它是种语言,正则表式本身就是一种什么正则表达式,它是一种语言,语言它也有自己的语法是吧。
30:12
这是正德表示是吧,那他这种语法主要是干什么的?正能源是这种语法总来用,你学这种语法干什么呢?是。对,他使用他这种语法可以定义一种字符串的匹配模式,定义这种模式干什么,可以匹配具体的字符串,是不是符合这种模式。符合那就什么正确的,或者是验证通过,不符合失败知道吧,所以我说这种语法它可以干什么,可以定义,可以定义,然后呢,字符串的字符串的匹配模式,正则表式为。
我来说两句