angular.js[2]

先看看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)最后生成了我们的最终视图。

在使用angular中具体问题
1 当图片无法加载的时候,使用替代图片资源
AngularJS加载图片的方法是用加ng-src标签 <img ng-src='{{itemsrc}}' />

当你的图片无法加载失败,比如图片不存在,在该放图片的地方就会出现一个难看的图片加载失败图标,如果想把这个图标换成你自定义的图片,可以如下这么做:

<img ng-src="{{currentUrl}}" err-src="img/404.jpg"/>

对应的js

var app = angular.module("MyApp", []);

app.directive('errSrc', function() {
  return {
    link: function(scope, element, attrs) {
      element.bind('error', function() {
        if (attrs.src != attrs.errSrc) {
          attrs.$set('src', attrs.errSrc);
        }
      });
    }
  }
});

2 使用ng-href的时候,发现其代码表现为:

那是因为使用ng-href,那么angular将会在编译完后去绑定url,当然这时候你看到的a标签属性上同时存在ng-href和href,后面的href是解析出来的,并且2个属性上的url值都正确绑定。

3 如果这么写 <img src="{{item.imgsrc}}" alt=""/>
会发现控制台发提示,无效的http请求,提示404错误
因为在angular实际渲染完成之前,浏览器读到img标签,于是开始向{{item.imgsrc}}发起请求,这样图片资源当然不存在,所以报错404.
所以应该写ng-src。这样就会有延迟加载的效果了,因为ng-src不是HTML标准attr,浏览器无法识别,也就不会发起无效的http请求

使用angular网页最初加载较慢,所以在网站首页使用ng-bind 比较好,其余页面使用{{ }} 这样的双括号进行数据绑定

你可能感兴趣的:(angular.js[2])