发表于: 2017-06-20 21:52:44
1 806
今天完成得事情:
尝试将分页写成指令。
看懂了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和百分比%为单位的行高,子元素行高为 父元素字体*行高。继承的都是计算值,而非属性值。
对于没有单位的数字,行高为 子元素字体*行高。
评论