Это довольно упрощенно, но я предполагаю репрезентативный взгляд на проблему.Имейте в виду, что у меня ограниченные знания об Angular, в частности.
У меня есть форма с блоком <pre>
, которая отображает нередактируемую строку JSON (StringA), а затем кнопку, которая позволяет просматривать текстовое поле.в котором я могу отредактировать строку в формате JSON (StringB) и отправить ее в бэкэнд.Проблема в том, что даже если я обновлю StringA другими способами (т.е. не через редактор браузера) и извлечу его во внешний интерфейс для его отображения, строка в текстовой области, которая должна быть привязана к StringB с помощью ng-nmodel=StringB
, никогда не обновляется, он сохраняет последнее значение, которое я в последний раз редактировал в текстовой области.Важно сказать, что всякий раз, когда я включаю режим де редактирования, StringB обновляется угловым кодом на StringB = JSON.stringify(StringA, null, ' ')
.Я даже печатаю значение в консоль как StringA, так и StringB, и я вижу, что они имеют правильные значения (в основном оба одинаковы), но строка, которую я вижу в textarea, всегда является строкой, которую я последний раз редактировал средствами браузера.
Например, скажем, StringA равен "{"A": 1}"
, и я включаю режим редактирования, а затем форматирую эту строку и присваиваю StringB, чтобы она правильно отображалась в текстовой области.Поэтому я изменяю его на {"A": 2}
и отправляю на сервер.Теперь я несколько раз изменяю StringA (с помощью REST API) и извлекаю данные на внешний интерфейс, чтобы отобразить его в режиме без редактирования.Теперь StringA имеет значение {"A": 5}
, и я включаю режим редактирования.Textarea будет по-прежнему отображать {"A": 2}
, которое было последним значением, которое я редактировал браузером, даже если, как видно из функции configEdit
, я изменил значение StringB.
Здесь HTML-код:
<code><div class="form">
<div ng-hide="showEditor" ng-model="StringA">
<pre>{{StringA | json}}
Я также включу код JS, хотя могу представить, что проблема заключается внеправильно обрабатывает интерфейс (возможно, мне не следует использовать текстовую область и т. д.)
$scope.configEdit= function() {
$scope.showEditor= true;
$scope.StringB= JSON.stringify($scope.StringA, null, ' ');
};