Angularjs自定义指令实现通用下拉选择框

注释写的比较清楚了吧 。。。

指令

bptconfig.directive('appnameSelect', function () {
    return {
        restrict:"EA",//E:元素  A:属性 C:样式类  M:注释
        replace: true,
        scope:{//@:从父级获取值后便只在本地作用域生效  = :同父级controller中的指定对象双向绑定  &:从父级获取一个变量的引用,常用作方法调用
            serviceName:'@',//service bean  后端根据这个值获取下拉数据 
            disabledType:'@',//是否可点击  true:是  false:否
            selectData:'=',//选中的值
            selectChange:"&",//选择事件
        },
        //模板 --模板代码多的情况下用templateUrl吧
        template:'<select ng-disabled="{{disabledType}}" ng-model=selectData class="form-control" ng-options="o.id as o.appName for o in appDatas"></select>',
        controller:['$scope','$http','$filter',function (scope,$http,$filter) {
        	//获取下拉选择数据
            $http({
                method:'POST',
                url:'role/getSelectData?serviceName='+scope.serviceName
            }).success(function (response) {
                scope.appDatas = response;
                //设置下拉框初始值
                if(scope.disabledType=='false' && response.length>0){
                    scope.selectData = response[0].id;
                }
            });
        }],
        link:function (scope,elements,attrs,controller) {
            //监听选择事件并交给父级处理(也可以在指令中处理,看具体使用场景)  
            scope.$watch('selectData',function () {
                scope.selectChange();
            })
        }
    }
})

页面使用

<appname-select select-change="changeSelect()"  select-data="data.appId"  
disabled-type="{{editType=='edit'}}"  service-name="appnameService"></appname-select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值