Запустить 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], которые использует директива. Ввод [тип = файл] должен быть инициализирован пользовательским событием, поэтому, если вы хотите открыть окно загрузки файла с функцией, вам нужно вызвать эту функцию из пользовательского события. Я надеюсь, что это помогает кому-то, кто испытал подобную проблему.

Другие вопросы по тегам