发表于: 2017-05-01 21:40:06

2 1020


今日完成:

调试了任务十最后的一些css以及js代码。重新复习自定义指令以及双向绑定的知识。

明日计划:

一方面把任务十一些功能改为自定义指令,另一方面做做复盘项目的准备。

问题:

1.之前任务十的时间插件是用的jquery的datepicker插件,同时时间插件的代码是直接写在html页面上的。把这段代码转移到控制器中之后,发现时间数据不能双向绑定了。尝试了几种解决办法,一是通过自定义指令,将数据重新双向绑定;二是为时间插件设置一个setinterval函数,让其定时获取时间的数据。第一种方法代码量稍多,第二种感觉浪费性能,最后还是直接改为用了angular-ui的时间插件了事。

收获:

下午基本在看慕课网的知识。加深了双向绑定与自定义指令的知识。

1.自定义指令中,关于template,有一个$templateCache 指令,可以实现输出内容的缓存与提取。感觉在特定情况还是很有用的。

它需要配合run方法使用。run方法实在angular 注入完成后执行一次的方法,通过run方法,$templateCache.put(标题,内容),将内容缓存。然后在指令中使用$templateCache.get(标题)即可读取缓存。

2.transclude  这是是定义是否嵌套,之前有点忽略这个功能。

3.关于link与complie 使用范围。

complie相对用的比较少,因为angular已有默认的complie,重写的话代码量比较多,还需要调试。

complie函数用来对模板自身进行转换,link函数是用于在模型与视图之间的动态关联。所以与操作dom有关的还是尽量用link函数。

另外,关于controller 。如果一些方法需要公用或者被调用,就可以写入controller。link函数中的方法都是给指令自己用的,没办法调用出来。

关于独立作用域的三种方式,其实都可以用link函数来实现,只是代码量变多了。

link函数有四个参数:scope, element, attrs, SomeController 。

scope:即与指令元素相关联的当前作用域,例如可以用来注册监听器:scope.$watch()

element:即当前指令对应的元素,使用它可以操作该元素及其子元素。例如<span my-directive></span>,这个span就是指令 my-directive所使用的元素。

attrs:由当前元素的属性组成的对象。

SomeController: 这个参数默认是没有的。除非需要进行指令嵌套,且已经声明了 require 'SomeController',这时就可以使用本参数了。


4. 关于 ng-blind 。我觉的它的作用是可以替代{{}}这个表达式,避免在网页加载比较慢的情况,出现文本的{{}}内容。





返回列表 返回列表
评论

    分享到