发表于: 2017-03-01 23:35:17

1 1301


你今天做了什么?
完成退出功能
完成退出,点击后退还能回到原来页面的拦截
完成点击记住账号密码功能
你明天打算做什么?
导航排序还是没有想清楚,需要在想想
模块管理页面
你遇见什么困难?
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的使用方法
拦截器实现登陆,退出功能



返回列表 返回列表
评论

    分享到