Запустить ngf-select программно
У меня есть директива, которая должна открывать окно выбора файлов при изменении переменной контроллера. Вот фрагмент директивы:
angular.module('settingsInternal')
.directive('triggerUpload', function ($timeout) {
return {
restrict: 'A',
link: function (scope, element) {
scope.$watch('mainCtrl.watchedVariable', function (variable) {
if (variable) {
$timeout(function () {
element.triggerHandler('click');
}, 20);
}
});
}
};
});
У меня проблема в том, что я не могу вызвать ngf-select на div. Он отлично работает, когда вручную нажимает на div, и функция watch правильно вызывает element.triggerHandler('click'). Я потратил несколько часов, пытаясь выяснить причину, по которой это не работает, если у кого-то была похожая проблема, пожалуйста, помогите мне выяснить, в чем проблема.
Ps Не обращайте внимания на имена переменных, они для демонстрационных целей.
1 ответ
Проблема была не в ngf-select программы angular, а во входных данных [type=file], которые использует директива. Ввод [тип = файл] должен быть инициализирован пользовательским событием, поэтому, если вы хотите открыть окно загрузки файла с функцией, вам нужно вызвать эту функцию из пользовательского события. Я надеюсь, что это помогает кому-то, кто испытал подобную проблему.