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