发表于: 2017-01-08 02:28:06

1 1354


今天完成的事情:学习了在controller里把this赋给vm(view model)来代替$scope;把任务六到十的服务器请求中的接口地址和方法抽离成服务;学习写了几个自定义指令完成新建和编辑学生输入的验证,达到禁止错误输入的效果;复习了一下svn,看了下师姐的教程;看了些源码了解真实项目中的后台和我们任务六到十的差别;看了精通angular的与后端交互章节


明天计划的事情:继续看精通angular和自定义指令和服务;重构任务六到十;


遇到的问题:一开始有个自定义服务中的一个方法,想要得到两个返回值不知道该怎么做,后来查到可以通过使用返回数组来实现返回多个值。如何在登录页面中判断是否已经登录来跳转路由?通过读取cookie中存储的登录返回数据来判断,实现路由跳转。


收获:

我的理解服务就是有选择性的一个全局空间,被注入的可以共享数据和业务逻辑,相当于一个小圈子,既能分享数据,又能避免全局的污染。


$scope和this:

$scope当控制器在写法上形成父子级时,子级没有的变量或方法会被父级自动强加在子级身上,子级可以任意获取到当前父级的变量或方法,这种形式是不可逆的。

this则是一个独立的个体,所有的东西由自己来管理。


小课堂学到了关于cookie的知识:http协议是无状态的协议即交换数据完毕后链接就会关闭。cookie实际是一小段文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response用客户端发送一个cookie,浏览器会保存cookie。再次请求时会把网址连同cookie一起提交。可以使用int maxtime来设置cookie以秒为单位的时效,如果是0可以实现删除,默认为-1


factory方式创建的服务,作用就是返回一个有属性有方法的对象。相当于:var f=myFactory();在自定义服务中注入服务示例,但不能注入$scope作用域对象。如果没有return会报错。注入的结果通常是一系列的function。具有特定目的的对象都是通过factory方法去创建
service方式创建自定义服务,相当于new的一个对象:var s=new  myService();,只有把属性和方法添加到this上才可以在controller里调用。如果使用具有返回值的写法,返回的值必须是一个对象,如果只返回基本类型,则实际返回的还是相当于this。service方法用于注入的结果通常是new出来的对象。

只有provider是能传.config()函数的service。如果想在service对象启用之前,先进行模块范围的配置,那就应该选择provider。需要注意的是:在config函数中注入provider时,名字应该是:providerName+Provider。使用provider的优点就是,你可以在Provider对象传递到应用程序的其他部分之前在app.config函数中对其进行修改。provider方法是最复杂的方法,除非你需要创建一个可以复用的代码并且需要进行全局配置,才需要使用provider创建。


服务的跨模块可见性:子模块的服务可以注入父模块的服务,兄弟模块的服务也是互相可见,模块的服务对于其他所有模块都可见,尚没有方法能限制服务仅在指定的模块内可见。angular将来自全部模块的所有服务都混入单一的应用级命名空间。


高级目录结构设计:

1.应用的源代码和伴随测试应该分清楚,以保证构建系统容易维护,因为源代码和测试通常有两套不同的构建任务。

2.任何外部库的第三方代码,应该与内部的代码隔离。外部库与内部库的变化不在同一步调上,而我们想让外部库随时升级变的更容易。将代码与外部库混合在一起,会让升级更困难,也更花时间。

3.构建的相关脚本应该安置在它们专属目录中,而不是散布在整个代码库中。

4.构建结果应该被输出到单独的目录下,构建输出的内容和结构应该匹配生产环境部署的要求——容易将构建输出的结构部署到最终的目的地上。




返回列表 返回列表
评论

    分享到