AngularDart Текстовая область Безопасный редактор HTML-строк

В моем приложении AngularDart у меня есть небольшой / простой текст с ограничением размера (160 символов). Я могу отображать строку html и оставшиеся символы с помощью:

<textarea class="form-control" name="description" id="description"  ng-model="consent.inputDescription" rows="3"></textarea>
<p>Remaining chars: {{consent.getRemainingChars()}}</p>

Не работает с html-символами типа "лайк" \&\egrave;

Директива ng-bind-html может правильно отображать строки html, но строка внутри контроллера не интерпретируется, поэтому я не могу правильно вычислить оставшиеся символы

В AngularJS для выполнения этой работы полезны службы строгого контекстного экранирования ($sce). Я не нашел его в AngularDart. Есть ли аналогичная реализация с AngularDart?


person FinistSeb    schedule 03.07.2014    source источник
comment
Вы устали получать объем внутреннего текста? Внутренний текст обычно неэкранирован.   -  person Sam    schedule 08.07.2014
comment
Я еще не удовлетворен поведением своего виджета. В моем редакторе текст пишется без экранирования, но хранится с экранированием серверной частью и отображается позже в текстовой области. Я получаю длину с помощью этой проверки DOM: textarea = _shadowRoot.query ('# description'); int nbChars = maxChars-textarea.value.length;   -  person FinistSeb    schedule 08.07.2014


Ответы (1)


Эта реализация работает, ждем лучше: - / Может быть, AngularDart может упростить этот код.

Я ловлю все события своего поля ввода с помощью

//handle text aera events
query("#description")
  ..onChange.listen(handler)
  ..onKeyDown.listen(handler)
  ..onKeyUp.listen(handler)
  ..onCut.listen(handler)
  ..onPaste.listen(handler);

Итак, я могу вычислить в обработчике оставшиеся символы

void handler(Event event) {
  remainingChars = _getRemainingChars();
}

Остальные символы вычисляются со значением textarea (небезопасно)

_getRemainingChars() {
  int nbChars = 160-_getUnsafeDescription().length;
  return nbChars;
}

Я прочитал отредактированный текст:

_getUnsafeDescription(){
  var textarea = _shadowRoot.query('#description');
  return textarea.value;
}

Текстовая область привязана к HTML-содержимому

<textarea class="form-control" name="description" id="description"  ng-bind-html="consent.inputDescription" rows="3"></textarea>
<p ng-if="consent.remainingChars">Remaining chars: {{consent.remainingChars}}</p>

Небезопасный отредактированный строковый пост, экранированный и сохраненный в бэкэнде

person FinistSeb    schedule 08.07.2014