以下是我的指令的实现:
function Upload(){
return {
restrict: 'E',
replace: false,
template: '<input type="file" id="uploader" name="files[]" multiple /><button id="submit">submit</button>',
controller: 'inputControl',
link: function(scope, elem, attrs, ctrl){
console.log(elem);
console.log(elem.find('input[type=\'file\']'));
elem.find('#submit').bind('click', function() {
console.log(elem.find('input[type=\'file\']'));
elem.find('input[type=\'file\']').click();
});
elem.find('input[type=\'file\']').on('click', scope.fileSelectionHandler);
scope.$on("$destroy",function Destructor(){
elem.find('input[type=\'file\']').off('click', scope.fileSelectionHandler);
});
}
}
}
app.directive('fUpload',['Data','$rootScope', Upload]);
HTML代码
<f-upload></f-upload>
模板是渲染,范围是,应用,但是elem.find方法仍然返回一个空原型,因此没有调用该指令的观察者和监听器。我很有棱角!真的很感激帮助。
修改
我尝试$timeout
延迟0秒。它不起作用。