Textarea ng-модель сохраняет последнее значение даже после обновления с контроллера - PullRequest
0 голосов
/ 23 октября 2018

Это довольно упрощенно, но я предполагаю репрезентативный взгляд на проблему.Имейте в виду, что у меня ограниченные знания об 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, '  ');
}; 

1 Ответ

0 голосов
/ 23 октября 2018

Похоже, в вашем коде есть проблема ... В вашем js-коде вы используете stringA где как в html StringA.используйте правильные стандарты кодирования, чтобы избежать подобных проблем

И у вас не должно быть ng-модели на div

...