Браузер файлов ng-file-upload не отображается с сгенерированным элементом данных

Я создаю динамический контент с таблицами данных, и в одной из ячеек таблицы есть кнопка. Эта кнопка должна запускать функцию загрузки файла контроллера страницы. Но ничего не происходит, когда я нажимаю на нее (даже TEST не регистрируется, функция не срабатывает).

Вот функция обработчика загрузки файла:

$scope.uploadFile = function (file) {
    //DBG
    console.log('TEST'); //No TEST is logged to console at this point
    Upload.upload({
        url: '/file-upload',
        data: {file: file}
    }).then(function (resp) {
        console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data);
    }, function (resp) {
        console.log('Error status: ' + resp.status);
    }, function (evt) {
        var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
        console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);
    });
};

И html динамически генерируется с такими таблицами данных:

<button class="btn button btn-default button-table" ngf-select="uploadFile($file)"><i class="fa fa-plus-circle"></i></button>

Я предполагаю, что это проблема с событием щелчка, которое не запускает браузер файлов динамически, и я не знаю, как принудительно запустить событие выбора файла с помощью этого плагина.


person moonwalker    schedule 28.06.2016    source источник


Ответы (1)


Я решил проблему, создав статическую скрытую кнопку:

<button id="button-upload-real" style="display: none" ngf-select="uploadFile($file)"></button>

и инициирование события щелчка с помощью кнопок в динамически генерируемых ячейках таблицы данных. Теперь работает как швейцарские часы.

person moonwalker    schedule 01.07.2016