发表于: 2017-02-06 01:53:44

1 1530


今天完成的事情:

基本完成前台后台整理:

搜索面板指令添加功能,单选与多选、清除、数据过滤。

面板数据保持;

页面跳转bug;


明天计划的事情:

开始小程序学习
遇到的问题:

之前写前台时,没有多选接口,今天测试多选已经可以用了,参数形式形如:

于是修改之前的指令;

要做三个事情:

1、指令输出数据格式为:1,2,3;

2、面板记录点击选择情况:无选择默认为不限,有选择则标记选择,取消不限;重复点击则为取消;

3、通过url参数变化改变对应样式;

实现:

html:

<options ng-model="vm.profession.industry" label-name="所属行业" options-name="industry" checkbox="true" do-cleaner="vm.doClean"></options>
scope.checkBox = attrs.checkbox;//html中属性checkbox为true则进入多选模式

scope.checkBox ? scope.choose = chooseBox : scope.choose = choose;


template:

<ng-class="{'active':checkBox?(valueArr|hasInArr:option.type):option.type===selectValue}"  ng-click="choose(option.type)" ng-repeat="option in options">{{option.name}}</a>

selectValue'=ngModel',//输出值
//多选
function chooseBox(value) {
   //选不限则清空,否则去重
   value === null ? arr = [null] : arr = duplicateRemoval(value, arr);//去重
   //至少一个选项为不限
   scope.valueArr.length ? scope.valueArr = arr : scope.valueArr = [null];//valueArr为面板展示数组arr,通过判断所选值是否在数组内来决定添加和删除样式;

   scope.selectValue = arr.join();//输出值
}


.factory('duplicateRemoval', function () {
   return function (n, arr) {  //n为选中值,arr为当前已选数组
       var inArr = false;
       arr[0] === null ? arr = [] : ''; //有选择行为时清除默认选择情况
       angular.forEach(arr, function (data, idx) {  //判断是否重复
           data === n ? remove(idx) : '';
       });
       function remove(idx) {
           arr.splice(idx, 1);
           inArr = true;
       }
       inArr ? '' : arr.push(n);
       return arr
   }
})


根据url变化对应样式:

scope.checkBox && paramster.get(scope.optionsName) ? scope.valueArr = arr = toNum(paramster.get(scope.optionsName).toString().split(',')) : scope.valueArr = [null];

启用多选且url中有值:将字符串转为number型数组;

//监听清空命令
scope.$watch('doCleaner', function (n, o) {//直接监听selectValue问题太多,会出现 ",1,2,3"这种情况,第一个为null,各种处理相对麻烦
   n !== o ? scope.valueArr = arr = [null] : ''
})
vm.doClean=!vm.doClean;//控制器中


结果:

searchjob?category=5,4,2&experience=3


收获:

如上


前台:http://59.110.159.108/luoboduo/html

后台:http://59.110.159.108/luoboduoadmin


返回列表 返回列表
评论

    分享到