发表于: 2017-03-01 23:35:17
1 1302
你今天做了什么?
完成退出功能
完成退出,点击后退还能回到原来页面的拦截
完成点击记住账号密码功能
你明天打算做什么?
导航排序还是没有想清楚,需要在想想
模块管理页面
你遇见什么困难?
1repeat出左边nav导航的时候是根据原来数组位置进行排序的,所以出来之后本来应该在最后一个的模块出现在了最前面,而今天看他们的属性,好像是可以使用比较ID是1位数字还是2位数字然后进行判断,从而实现排序,但具体怎么实现还没有想明白
2昨天传参数的时候是从URL传递,而登陆页面的下一个页面就是NAV页面,所以URL上的参数会一直存在,导致取值的麻烦,和页面跳转的问题!所以需要把传参方式进行修改!其中登陆页面控制器修改成了只负责获取返回的ID同过URL传递,另外的数据通过localStorage.来进行传递对象数据,在下一个页面上进行值的获取,并进行2次发送以后的操作!在这里就把数据分开完成,而数据源头的不一样所以后面的代码也有了一定的修改,时间就到了下午,开始制作点击保存账号,密码功能,这个地方使用了双向绑定和cookie 来实现了这个功能,在这里有一个坑是,光有cookie的名字是有可能删除不掉的,还需要添加路径path,这样就可以删除,而跟代码也有关系,我是从网上找的代码,一开始是覆盖,后来才又找了一个删除的代码!在这个坑里出来之后时间就到了晚上了开始实现退出功能,因为前面已经把数据都存好了,所以这里并没有用到前面操作的数据,而了使用了后端给我种的饼干来判断是否是在登陆状态,这里使用了$watch来监听一个vm.变量,这个变量获得了一个饼干的值,最开心进来是一定会有值的,因为后端刚刚给我种了饼干,所以$watch会触发一次,我在里面写了一个判断,当等于unf的时候才会触发里面的事情,所以最开始是不会触发的,当我点击退出的时候,我就把后端给我种的饼干删除,然后赋值给vm.变量,这样就被发现了,所以就会跳转到登陆页面上去,然后点击后退的时候,会回到原来的页面,但是没有饼干了,所以又会被发现,又回到了登陆页面。最后来看看代码吧
angular.module('raphanusApp')
.controller("loginss",function($scope,$http,$state,Interface){
var vm = this;
var id ;
var test = localStorage.getItem("test")
vm.user = JSON.parse(test);
//console.log(vm.name)
vm.deleteStorage = function(){
localStorage.removeItem("test");
}
vm.loginss = function(){
if(vm.user.check == true){
var json = JSON.stringify(vm.user);
localStorage.test = json
}
Interface.Login(vm.user).then(function(res){
id = res.data.data.role.id;
var userName = JSON.stringify(res.data.data);
localStorage.user = userName;
$state.go("field",{"model":id})
})
};
})
.controller("field",function($scope,$http,$state,$stateParams,Interface){
var vm = this;
//接受参数
var user = localStorage.getItem("user")
vm.userss = JSON.parse(user);
//console.log(vm.userss)
var id = $stateParams.model;
var ids = [];
Interface.Module(id).then(function(res){
var x = res.data.data.role.permissionsSet;
var b = res.data.data.role;
console.log(b)
for(var s in x){
ids.push(s)
}
var data = {ids};
var v = [];
var c = [];
vm.model = [];
Interface.Modules(data).then(function(res){
//源数据返回
var data = res.data.data;
//console.log(data)
//父子级分类
angular.forEach(data.moduleList,function(value){
if(value.parentID == 0){
v.push(value)
}
else {
c.push(value)
}
});
//类似冒泡排序取值
angular.forEach(v,function(one){
one.child=[];
angular.forEach(c,function(values){
if(one.id == values.parentID){
one.child.push(values)
}
});
//最终repeat数据源
vm.model.push(one);
console.log(vm.model)
});
});
})
//删除退出
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString()+"; path=/";
alert("成功退出")
}
//退出功能
vm.outlog = function(){
vm.Cookies = delCookie("www.zonzii.com")
//$state.go("login")
}
vm.Cookies = getCookie("www.zonzii.com")
$scope.$watch('vm.Cookies',function(){
if(vm.Cookies == undefined){
$state.go("login")
}
},true);
});
你的收获?
watch的使用方法
拦截器实现登陆,退出功能
评论