发表于: 2017-07-16 22:52:47

1 828


今天完成的事情:

职位搜索页:

'use strict';

angular.module("app")

    .controller("searchJobListPerson", ['$scope', '$state', 'httpService', 'logicService', 'searchPanel', 'searchUtil', searchJobListPerson]);

    function searchJobListPerson($scope, $state, httpService, logicService, searchPanel, searchUtil) {

        var vm = this;

        vm.params = $state.params;

        var searchPanelCopy = angular.copy(searchPanel);

        // 读取本地数据

        vm.option = logicService.judgeStorage(sessionStorage.jobOptions, searchPanelCopy);

        // 初始化

        vm.paginationConf = {

            pagesLength: 7

        };

        vm.params.page = vm.params.page? vm.params.page : 1;

        // 选中从其他页面传来的二级类目信息

        if($state.params.type) {

            vm.option.category[0].choose = false;

            vm.option.category[parseInt($state.params.type)].choose = true;

        }

        vm.selectSubCategoryFn = function (index) {

            // 判断需要展开详情的类目

            vm.showCategoryNum = logicService.judgeShowCategoryDetail(vm.option.category);

            // 展开三级类目

            if(index > 0 && vm.showCategoryNum > 0) {

                vm.option.subCategory = searchPanelCopy.subCategory[vm.showCategoryNum - 1].data;

            }

            // 清除三级类目数据

            else if(index === 0 || vm.showCategoryNum === 0) {

                vm.option.subCategory = [];

            }

        };

        // 选中从其他页面传来的三级类目信息

        if ($state.params.subType && vm.option.subCategory.length > 0) {

            vm.option.subCategory[0].choose = false;

            vm.option.subCategory[parseInt($state.params.subType)].choose = true;

        }

        vm.selectSubCategoryFn(parseInt($state.params.type) + 1);

        // 选中的数据

        vm.data = searchUtil.dataConvert(vm.option);

        // 存入本地

        sessionStorage.jobOptions = JSON.stringify(vm.option);

        // 数据组装

        vm.data.name = vm.params.name;

        vm.data.page = vm.params.page;

        vm.data.size = 10;

        // 标签单选

        vm.radioType = searchUtil.radioType;

        // 搜索

        vm.search = function() {

            sessionStorage.jobOptions = JSON.stringify(vm.option);

            $state.go('.', {page: 1, size: 10, name: vm.data.name, type: null, subType: null}, {reload: true});

        };

        // 清空

        vm.clear = function() {

            sessionStorage.removeItem("jobOptions");

            sessionStorage.jobOptions = JSON.stringify(searchPanelCopy);

            $state.go('.', {page: 1, size: 10, name: null, type: null, subType: null}, {reload: true});

        };

        // 获取职位列表

        httpService.getSearchJob('', vm.data)

            .then(function(res) {

                if(res.data.code === 0) {

                    vm.plainJobList = res.data.data;

                    vm.paginationConf.totalItems = res.data.total;

                }

                else {

                    alert(res.data.message);

                }

                // 404页面

                if(res.data.code < 0 || vm.plainJobList.length === 0) {

                    httpService.getSearchJob('', 3)

                        .then(function(response) {

                            vm.eliteJob = response.data.data;

                        });

                }

            });

    }

这里的话有一个困扰了我两天的bug,就是$state.go传参的时候,传入值不为空的时候,可以正常获取列表,但是如果输入框删除之前的值进行传参的时候,$state.params.name却无法更新,也就是无法清空,然后今天杨泽平帮我折腾半小时后,来了句换ui-router的版本,然后就解决了,以后凡是遇见不正常的bug,第一件事就是换版本。

然后另外一个bug就是做高亮的时候,我直接使用{className: $state.includes('xxx')},却不生效,然后查找资料才知道,必须在控制器里声明$rootScope.$state = $state,才能判断出url的值,然后我照做了,还是不生效,看了下官网,important大法!加上去ok生效了。

明天计划的事情:

开始公司详情页编写

遇到的问题:

已解决

收获:

解决bug的经验以及$state.includes使用时应该注意的地方




返回列表 返回列表
评论

    分享到