angular 指令梳理 —— select 含 多选

下拉框指令。支持多选。依赖bootstrap

数据库存储,数据多选以逗号分割eg:1,2 

<select ht-select="user.sex" permission="w" multiple ng-model="user.sex"></select>

 1 .directive('htSelect', function() {
 2      return {
 3         restrict : 'AE',
 4         require: "ngModel",
 5         scope:{
 6             htSelect:"="
 7         },
 8         link: function(scope, element, attrs,ctrl){
 9             var permission = getPermission(attrs.permission,scope);//权限。没有权限控制的可以忽略11             var isMultiple =attrs.multiple!=undefined; //是否多选
12             
13             if(permission == 'n'){
14                 element.hidden();
15             }else if(permission=='r'){ //只读
16                 var value = scope.htSelect;
17                 if(!value) return;
18                 
19                 if(isMultiple) value=value.split(",");
21                 elsevalue=new Array(value); 24                 
25                 var text=[];//只读获取key对应的text
26                 for (var int = 0,val;val=value[int++];) {
27                     text .push( $("option[value='"+val+"']",element).text());
28                 }
29                 element.after(text.join(",")).hide();
30             }
31            
32             if(!isMultiple) return;
33             //编辑多选情况,modelValue为男,女。viewValue为[男,女]
34             ctrl.$formatters.push(function(value){
35                  if(value) return value.split(",")
36                  return []
37             });
38             ctrl.$parsers.push(function(value){
39                  if(value&&value.length>0) return value.join(",")
40                  return "";
41             });
42         }
43                    
44 })

 

posted @ 2016-04-30 22:52  沉毅寡言  阅读(613)  评论(0)    收藏  举报