发表于: 2017-05-01 23:46:55
1 1027
今天完成的事情:
为后台搜索框添加双向绑定,点击后根据搜索框中的条件进行搜索并展示结果,学习自定义angular指令。
明天的计划:
完成任务8.
遇到的问题:
1 angular双向绑定关键点理解:
angularjs中关于数据双向绑定的几个关键api有$watch()、$apply()以及$digest()。
$watch()用于视图向模型的检测,$apply()用于模型向视图的渲染。
$watch()监测模型是否发生变化,而在模型发生变化真正执行后续操作需要执行$digest()对watch队列进行循环检测。然而只有进入angular 的上下文环境才能执行$digest()循环检测,而进入angular的上下文环境需要执行$apply()。也就是说$scope.$apply()执行会自动触发$rootScope.$digest(),
如果我们写的指令在运行时没有进入到angular的上下文环境中,$watch()只会将模型的值进行保存而不会将model渲染进view中。常用的angular封装好的指令例如ng-click在执行后会自动进行数据的双向绑定,原因就是已经在指令中执行了$apply()。
2 自定义指令的关键词用法:
restrict: 描述指令在模版中的使用方式,包括:元素、样式类、属性、注释,或者以上几种方式的任意组合。
template: 以字符串的形式编写一个内联模板。
templateUrl: 加载模版所需要使用的url,如果已经指定了template,此属性会被忽略。
replace: 如果该属性为true,则替换指令所在的元素;如果为false或者不指定,则追加到元素内部。
transclude: 当此属性为true时,把指令元素中原来的子节点移动到一个新模板的内部。
收获:以上知识点。
评论