发表于: 2017-07-06 23:28:02
1 854
今天完成的事情:
封装完毕图片指令
明天计划的事情:
整理项目,完善项目的细节。
解决项目中存在的bug。
遇到的问题:
之前自定义的指令在视图中没有显示出来,后来发现是因为指令用了驼峰写法,而写在html中没有转换成连词写法。之所以必须这样转换是因为html是不区分大小写的。
在jq中定义变量不双向绑定的问题,可以使用$apply绑定变量,变量值改变后视图上即会刷新为新值。
收获:
数据绑定的过程:
1.每次你绑定一些东西到你的UI上时你就会往$watch队列里插入一条$watch。
2.开始在视图中输入值。
3.浏览器接收到一个事件,调用$apply,将数据封装入$apply,进入angular context。
4.$digest循环开始执行,查询每个$watch是否变化。
5.检查到了$watch报告了变化,会再执行一次$digest循环。
6.再次执行$digest循环,直到没有检测到变化。
7.浏览器拿回控制权,更新与$scope.name新值相应部分的DOM。
每一个进入angular context的事件都会执行一个$digest循环,也就是说每次我们输入一个字母$digest循环都会检查整个页面的所有$watch。
当在jQuery中定义变量时,jQuery没有调用$apply,事件没有进入angular context,$digest循环永远没有执行。
解决方法即手动将变量封装入$apply,如:
element.bind('click', function() {
scope.$apply(function() {
scope.foo++;
scope.bar++;
});
})
评论