发表于: 2017-06-20 21:52:44

1 807


今天完成得事情:

尝试将分页写成指令。

看懂了angular依赖注入机制。

学习小课堂浏览器缓存


1,angular的依赖注入:

在Angular中,Directive、Service、Filter、Controller都是以工厂方法的方式给出,而工厂方法的参数名对应着该工厂方法依赖的Service。如:

app.controller('worldCtrl', function($scope, $http){});

controller中注入了$scope,和$http服务。

在注入之前,Injector会生成一个$scope的实例和$http的实例。

我们可以自己创建Service来注入,主要有如下创建方式:

a,工厂模式

app.factory('someService', function(dependency1, ...){
   return {
       property1: value1,
property2: value2
}
});

b,构造函数

app.service('someService', someService(dependency1, ...){
   this.property1 = value1;
   this.property2 = value2;
});

c,Value/Constant

app.value('someService', { property1: value1, property2: value2});

app.constant('anotherService', 'I am a simple string');

constant和value的区别在于是否允许修改。

d,Provider

上述的 Service 构建方式都是 Service Provider 的特例,事实上它们都是调用 Service Provider 来实现 Service 声明的。

app.provider('someService', function someServiceProvider(){
   var someSettings = false;

   this.changeSetting = function(value){
       someSettings = value;
   }

   this.$get = function(dependency1, ...){
       return {
           property: someSettings ? value1 : value2
}
   }
});

同时 Service Provider 是可配置的:

app.config(function(someServiceProvider){
   someServiceProvider.changeSetting(true);
});


2,浏览器强制缓存协议缓存

流程如下:

F5刷新页面会使第一个html页面向后台请求比较Etag信息,一般会返回304。项目中其它请求(css,js)不受影响,一般从浏览器缓存读取,返回200。

Ctrl+F5会使整个页面中所有的文件资源强制进行http请求,重新从服务器获取,一般返回200。但是,如果页面中设置了路由,则Ctrl+F5只会影响本状态下的文件,其它状态下的文件不受影响。若需要其它路由状态文件也强制重新获取,可右键点击刷新按钮,选择“清空缓存并硬性加载”。



明天计划的事情:

继续完善指令。


遇到的问题:

暂无。


收获:

回复师妹日报时发现了之前没有注意的一个知识点,line-height的继承:

以em、ex和百分比%为单位的行高,子元素行高为 父元素字体*行高。继承的都是计算值,而非属性值。

对于没有单位的数字,行高为 子元素字体*行高。


返回列表 返回列表
评论

    分享到