打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
AngularJS进阶(三十二)书海拾贝之特殊的ng


 

在说明这两个指令的特殊之前,需要先了解一下ng的启动及执行过程,如下:

 

1) 浏览器加载静态HTML文件并解析为DOM;

 

2) 浏览器加载angular.js文件;

 

3) angular监听 DOMContentLoaded 事件,监听到时开始启动;

 

4) angular寻找ng-app指令,确定作用范围;

 

5) 找到app中定义的Module使用$injector服务进行依赖注入;

 

6) 根据$injector服务创建$compile服务用于编译;

 

7) $compile服务编译DOM中的指令、过滤器等;

 

8) 使用ng-init指令,将作用域中的变量进行替换;

 

9) 最后生成了我们的最终视图。

 

      可以看到,ng框架是在DOMcontent加载完毕后才开始发挥作用。假如我们模板中有一张图片如下:

      <img src=”{{imgUrl}}” />

      那么在页面开始加载到ng编译完成之前,页面上会一直显示一张错误的图片,因为路径{{imgUrl}}还未被替换,就像这样:

      为了避免这种情况,我们使用ng-src指令,这样在路径被正确得到之前就不会显示找不到图片。同理,<a>标签的href属性也需要换成ng-href,这样页面上就不会先出现一个地址错误的链接。

     顺着这个思路再多想一点,我们在模板中使用{{}}显示数据时,在ng编译完成之前页面上岂不是会显示出大括号及里面的表达式?确实是这样。为了避免这个,ng中有一个与{{}}等同的指令:ng-bind,同样用于单向绑定,在页面刚加载的时候就不会显示出对用户无用的数据了。尽管这样你可能不但没舒心反而更纠结了,{{}}那么好用易理解,还不能用了不成?好消息是我们依然可以使用。因为我编写的是单页面应用,页面只会在加载index.html的时候出这个问题,只需在index.html中的模板中换成ng-bind就行。其他的模板是我们动态加载的,就可以放心使用{{}}了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
AngularJS开发指南04:核心概览 | AngularJS中文社区
AngularJS路由和模板
AngularJS开发下一代Web应用笔记(一)
《AngularJS》5个实例详解Directive(指令)机制
一步一步弄懂angularJS基础
AngularJS1:directive和controller如何通信
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服