angular爬坑

ng新手,难免会遇到形形射射的问题,在这把一些需要的一下

1.{{}}语法和ng-bind

Q:

在数据绑定上面,相信很多人都喜欢用 {{}} 双花括号的方式来绑定数据,我也不例外。但是在这会遇到一个问题,就是从另一个页面跳转到这个用双花括号绑定数据的页面 a page => {{}} page 的时候会有这么一个效果。
页面数据还没加载完成的时候,会一直显示双花括号和数据,非常的不友好。

...
{{ pay }} // 用户能看到{{ pay }}
...

A:

使用花括号语法时,因为浏览器需要首先加载页面,渲染它,然后AngularJS才能把它解析成你期望看到的内容。
ng-bind是在angular解析渲染完毕后才将数据显示出来的。
所以对于首个页面中的数据绑定操作,建议采用ng-bind,以避免其未被渲染的模板被用户看到。

2.$apply

这个比较难描述,建议去看官网$watch $digest $apply,社区也说得非常明白。
每次你绑定一些东西到你的UI上时你就会往$watch队列里插入一条$watch。想象一下$watch就是那个可以检测它监视的model里时候有变化的东西。

Q:

我就在这简单描述遇到的情况,在ng里定义一个点击事件,改变某个$scope的值,然后console出来,可以发现函数执行了,这个值也被修改了,但是页面没有刷新,要在下一次点击的时候页面才重新渲染,但是值又发生改变了,渲染的是上次的值。
主要原因是这个事件是定义在angular content的外面的,angular并不知道,没人通知它要跟新页面。
A:
所以手动通知就可以了。

$scope.$apply(function() {
    //change your data
});

原因是没有用到ng封装好的事件,而是不在检测范围内的事件,比如说jQuery的...所以在事件发生的时候并不会触发dirty查询。

will go on

你可能感兴趣的:(angular爬坑)