发表于: 2017-02-23 23:13:57
1 1232
一、今天完成的事情:
1.熟悉了rem、em是啥东西,啥时候该用啥;
2.了解到了ng-checked方法,用来做公司福利选项;
3.将模态框封装成了指令,实现了复用;
4.完成了上下线、删除职位的功能;
二、明天要做的事情:
1.彻底完成工作添加、工作编辑;
三、今天遇到的问题:
animation | 是否有动画效果,true表示有 |
templateUrl | 模板位置 |
controller | 模板使用的controller是哪一个(每个模板都会有controller) |
size | 模态框的大小,默认md,对应bt栅格的大小,但是需要这样添加 modal-lg |
resolve | 传入模态框controller中的数据,用于页面渲染和数据操作 |
result | 回调函数,触发close之后可以获取到里面的数据,并执行里面的方法 |
keyboard | 布尔值,默认为true,可以通过键盘esc关闭模态框 |
opened class | 打开时加到body上的class属性 |
windowclass | 会附加一个class到打开的模板上面 |
close | 点击正常关闭后触发的事件,可以将值传入$uibModle的result中,需要这样存值$value:xx |
dismiss | 非正常关闭触发的事件 |
return {
restrict:"A",
replace:false,
scope:{
/*点击确认后执行的函数*/
ctrFn: '&',
/*获取各种数据的函数*/
ctrclick:'&',
/*是否要显示第二段弹出框,没有默认会弹出第二段*/
modalTwice:"@",
/*第一次是否有确认按钮,没有就默认弹出会有*/
okChoose:"@",
},
//scope.modaldata中对应三个参数,首先第一个模板默认显示两行,第一行是tilte,第二行是content。第二个模板默认只显示一行,success并且只有一个取消按钮
link:function (scope,ele) {
/*给属性添加一个点击事件*/
ele.bind("click",function () {
/*执行我那边传入值的函数*/
scope.modaldata=scope.ctrclick();
scope.openModle();
});
scope.openModle = function (size,num) {
/*打开模态框的过程*/
var modalInstance = $uibModal.open({
animation: true,
templateUrl: 'tpls/modaltpls/test.html',//模态框的页面内容,这里的url是可以自己定义的,也就意味着什么都可以写
controller: 'ModalInstanceCtrl',//这是模态框的控制器,是用来控制模态框的
size: size,//模态框的大小尺寸
resolve: {//这是一个入参,这个很重要,它可以把主控制器中的参数传到模态框控制器中
items: function () {//items是一个回调函数,我这里需要让它在外部获取到
scope.modaldata.num = num?1:false
scope.modaldata.okChoose = scope.okChoose?2:1;
return scope.modaldata;//这个值会被模态框的控制器获取到
}
}
});
modalInstance.result.then(function () {
scope.ctrFn();
scope.modalTwice?false:scope.openModle(size,1)
})
}
}
}
})
关于rem和em的思考:
1.首先,你要知道em这个表示宽度,是通过使用em的这个元素的font-size来确定,我们都知道,font-size属性是可以继承的,比如你父元素设置的10px,你给父元素下的一个元素设置0.5em这个元素就变成了5px。但是这种继承的情况会在它有多个层级的时候变得特别复杂,来一个小demo
<div style="font-size: 2em">我是子元素,我的字体大小是20*2=40px
<div style="font-size: 2em">我是子元素下的元素,我的字体大小是40*2=80</div>
</div>
5.什么时候不要使用rem、em:多列布局,因为多列布局最好使用百分比来表明他们的高度宽度,这样浏览器才能够更好的进行自适应,当然,在单列的情况下还是推荐使用rem的,或者是改变字体的大小必然会改变布局的情况,这种也必须给它写死了
一些小的想法:
评论