这是我在公司时候做的一个管理界面的AngularJs代码,发出来是为了记录一下自己的心得体会,NG、ES6新手可以看看,大神可以选择忽略或者给我指点一下~ =。=||
项目名字:Angular-backmanager
项目语言:ES6、AngularJs
1:模块分析:三个模块:CampaignContent、AddNew、BannerDetail
2:需要加载的资源模块分析:
css模块:
解释:这个模块呢由于是css的,没有像js那样可以exports出模块,所以import的时候,不能写模块的名字,而是要写文件路径,整个文件当是导出的一个大模块。
解释:因为这些模块是可以直接在node_module里面找到的,所以直接写模块名字就可以让node自动寻径。
解释:开始加载每个页面模块的代码(import和exports的关系了)
3:结构分析
加载完了各个模块了,那就要开始把它们拼接起来了:
2:在主要的BannersApp这个单页页面最大的模块里面,插入依赖的模块,就是[]里面的都是上面加载的模块的名字;
例如在CampaignContent模块里面:
这里是CampaignContent这个module里面的内容,里面就集中加载了这个module里面相关的directive、services和controller。
3:然后我们来继续说那个config(routing)这个东西的作用,单页应用的路由就是放到这个config里面进行加载的。如图所示:
我使用的是ui-router,每种路由情况给它指定一个View的模板,是一个html页面,对应的controller也要给它指定了,这里指定了controller,在html里面就不需要再写ng-controller了,不然会导致重复加载执行。
这里还使用了controllerAs,就是给这个controller这个对象实例以其as的别名在scope上创建了一个新的对象属性,就可以使用this,后面讲解controller的时候可以看到。
就是view上多增加了个demoController as demo,给controller起了一个别名,在此后的view模板中靠这个别名来访问数据对象。如下图:
4:接下来可以看下具体controller的代码
解释:这里是ES6的类式写法,es5的写法是
这个this就是这个类的,demo就相当于是实例化的一个变量,在view里面的ng变量,就可以写在controller的this下面作为属性进行赋值。
上图的那个this.bannerprojects= Showbanner,query({})就是通过$http协议获取的服务器数据;
我们可以看到,在constructor里面,我们把依赖给当作参数带入了这个controller类,而Showbanner就是一个服务,里面我写了请求数据服务。下面我们就来说下“service”
5:我们来看下Showbanner这个服务的代码
这个服务代码也是用es6写的,一般服务都是用于保存数据和数据相互用的,所以一般都是用于return一些数据,这里是使用封装了底层$http协议的一个$resource模块,用于请求服务器的数据,这个$resource模块是同RESTFul的后端服务进行交互,这个规范一般就是在路由上面带参数这个形式来请求数据。
这里的$resource是属于扩展了的,有第三个参数。(详情请看右边的那章详细)
6:页面上有很多标签元素是需要赋予事件指令的,这个可以在controller上面绑一部分,但是通常建议是直接写在directive上面。
下面我们来看下基本的directive使用:
在img点击了之后,scope.isimg=false,否则true这里的scope要写false才能不建立directive自己的scope,直接使用外部当前的scope,详情请看第一章Angular
把所有的directive都集中起来一起引入到module里面,其他的也是这样
7:filter的使用
其实过滤器就是把输入进来的输入,处理过后,return回去。