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.&
单向绑定,有去无回