html - 即使从控制器更新后,Textarea ng-model 也会保留最后一个值
问题描述
这是一个相当简化的但我猜这个问题的代表性观点。请注意,我在 Angular 方面的知识特别有限。
我有一个表单,其中包含一个<pre>
显示不可编辑的 JSON 字符串 (StringA) 的块,然后是一个按钮,该按钮启用一个文本区域的视图,我可以在其中编辑 JSON 格式的字符串 (StringB) 并将其提交到后端。问题是,即使我通过其他方式(即不通过浏览器编辑器)更新 StringA 并将其检索到前端以显示它,应该绑定到 StringB 的 textarea 中的字符串ng-nmodel=StringB
永远不会更新,它保持最后一个值,我最后在 textarea 中编辑。重要的是,每当我启用 de 编辑模式时,StringB 都会通过 Angular 代码更新StringB = JSON.stringify(StringA, null, ' ')
. 我什至将值打印到 StringA 和 StringB 的控制台,我可以看到它们具有正确的值(基本上两者都是相同的),但我在 textarea 中看到的字符串始终是我上次通过浏览器编辑的字符串。
例如,假设 StringA 是"{"A": 1}"
并且我启用了编辑模式,然后我格式化该字符串并分配给 StringB,以便它正确显示在 textarea 中。所以我修改它{"A": 2}
并提交到后端。现在我修改了几次 StringA(通过 REST API)并检索到前端以在非编辑模式下显示它。现在 StringA 具有价值{"A": 5}
,我启用了编辑模式。Textarea 仍然会显示{"A": 2}
我通过浏览器编辑的最后一个值,即使在configEdit
函数中看到,我已经修改了 StringB 的值。
这里的HTML代码:
<div class="form">
<div ng-hide="showEditor" ng-model="StringA">
<pre>{{StringA | json}}</pre>
</div>
<div ng-show="showEditor">
<textarea id="editArea" ng-model="StringB"
ng-show="showEditor">
</textarea>
</div>
<button class="button" type="submit"
ng-click="configEdit()" ng-hide="showEditor"> Edit </button>
<button class="button" type="submit"
ng-click="update(StringB)" ng-show="showEditor"> Submit </button>
</div>
我还将包含 JS 代码,尽管我可以想象问题来自未正确处理前端(也许我不应该使用 textarea 等)
$scope.configEdit= function() {
$scope.showEditor= true;
$scope.StringB= JSON.stringify($scope.StringA, null, ' ');
};
解决方案
似乎您的代码中有问题...在您的 js 代码中,您正在使用stringA
where 和 html StringA
。使用适当的编码标准来避免此类问题
而且你不应该在 div 上有 ng-model
推荐阅读
- android - 无法膨胀行为子类 com.google.android.material.transition.MaterialContainerTransform
- javascript - 什么类型的 import 语句用于从 ES6 转译到 ES5 的文件?
- javascript - 基于字符串数组以字符串格式“...”创建 html 表
我正在尝试根据一些输入参数“header,body”创建一个表,header接收一个字符串“header1,header”,其值由分隔,而body接收一个包含数组的数组,字符串由分隔,我尝试绘制正文值,但值水平显示。
Estoy intentando crear una tabla en base a unos parame
- node.js - 使用带有服务帐户的 nodejs 的谷歌电子表格?
- python - 删除嵌套字典中任意深度的键
- python - 在pyspark中将日期转换为所需的格式
- python - 为什么我的for循环打印内存位置
- c# - Azure b2c 错误:IDX10501:签名验证失败。无法匹配键:孩子:'gLv****************'
- kotlin - 在方法调用中获取 Micronaut ResourceLoader
- python - 在 python 中将多个图像保存在单个 TIFF 文件中