WedX - журнал о программировании и компьютерных науках

Обновление директивы при изменении ввода

Во-первых, новичок в angularJS, извините, если этот вопрос тривиален, но моя конечная цель - изменить мой шаблон всякий раз, когда вводится новый файл уценки. Итак, сейчас моя директива выглядит так:

app.directive('markdown', function() {
  return {
    restrict: 'E',
    replace: true, 
    scope: {
        fileinput: '='
    }, 
    compile: function(elem, attrs) {
        attrs.$observe("fileinput", function() {
            elem.replaceWith(marked(markdownString));
        });

    }
  }
});

Мой html выглядит так

<markDown md="test1.txt"></markDown>
<input type="file" name="filename" id="fileinput" ng-model="input">

Где test1.txt — это файл уценки, который я конвертирую с помощью функции marker() в html. Ниже показано, как я читаю в test1.txt.

$("#fileinput").change(function (e) {
      if (e.target.files != undefined) {
        var reader = new FileReader();
        reader.onload = function (e) {
            markdownString = e.target.result;
        };
        reader.readAsText(e.target.files.item(0));
      }
    });

Я могу отлично читать файл, но директива заменит HTML до того, как я открою и прочитаю файл, и это нормально, но я хочу обновить директиву и запускать ее снова всякий раз, когда я ввожу файл. Я пробовал как attrs.$observe, так и scope.$watch, но, похоже, ни один из них не работает у меня, возможно, я просто пишу их неправильно?

Заранее спасибо!

Изменить! Fiddle С помощью приведенной ниже помощи я смог получить входные данные для chanve, но сейчас он с задержкой, не совсем то, что я хотел. Загрузите файлы пару раз, чтобы понять, что я имею в виду. Спасибо


  • Поместите это в jsfiddle или plunker и опубликуйте ссылку 26.06.2014

Ответы:


1

Существует много разговоров о поддержке/не поддержке input type="file" в angular, но они есть не поддерживает привязку к нему. Ключевая проблема, по-видимому, заключается в том, что вы можете только читать свойства ввода файла, а основная концепция привязки Angular является двусторонней.

тлдр:

Вы не можете использовать для этого ng-model, но можете сделать это вручную.

25.06.2014
  • Спасибо за вашу быструю помощь, но, похоже, обновление происходит с задержкой на один ввод. Вот ссылка скрипта. Когда вы добавляете файл, он, кажется, обновляет предыдущий. Это так близко к результату, который я хочу, но немного не так! 26.06.2014
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]