angularjs指令的&=@<?

1.&

 function uploadPanel(PathUtils) {
        return {
            restrict: 'E',
            bindToController: {
                "uploadFunction": '&',//传一个function
                "downloadFunction":'&?', //也是传一个function,可传可不传,?跟<的功能一样的    
            },
            scope: {},
            controller: ['PathUtils', UploadCtrl],
            controllerAs: 'uploadCtrl',
            templateUrl: PathUtils.qualifiedPath("/common/directive/upload-panel.html")
        }
    }
     function UploadCtrl(PathUtils) {
        var vm = this;
        vm.downloadTemplate = downloadTemplate;
        function downloadTemplate() {
            if(vm.downloadFunction== null)
                window.location.href = PathUtils.qualifiedPath(vm.template);
            else{
                vm.downloadFunction();//js闭包的性质
            }
        }
        }

例如:

<upload-panel id="upload" upload-function="typeModifyCtrl.uploadFile()"
                                  download-function="typeModifyCtrl.downloadTemplate()"></upload-panel>
<upload-panel id="upload" upload-function="typeModifyCtrl.uploadFile()"></upload-panel>
function TypeModifyCtrl($uibModalInstance,statusChangeTypeDao,ecnuSetTypeDao,FileExport, id) {
        var vm = this;
        vm.uploadFile = uploadFile;
        vm.downloadTemplate = downloadTemplate;
         function uploadFile(){
            statusChangeTypeDao.uploadChangeTypeById(id,vm.item.changeFile , function(response){
                vm.item.changeFile = null;
            });
        }
}
function downloadTemplate(){
           statusChangeTypeDao.getFileUrl(vm.item.majorCode, vm.item.minorCode ,function(response,status, headers, config){
              //处理文件的过程
           })
       }

2.=

双向绑定

function uploadPanel(PathUtils) {
        return {
            restrict: 'E',
            bindToController: {
                "maxFileSize":"=",//双向绑定
            },
            scope: {},
            controller: ['PathUtils', UploadCtrl],
            controllerAs: 'uploadCtrl',
            templateUrl: PathUtils.qualifiedPath("/common/directive/upload-panel.html")
        }
    }
<upload-panel id="upload" max-file-size="typeModifyCtrl.maxFileSize"></upload-panel>

3.&

单向绑定,有去无回

猜你喜欢

转载自blog.csdn.net/qq_33653393/article/details/78740571