angularjs - 禁用基于动态模型字段的输入
问题描述
我正在使用 json 表单模板文件为我的表单动态生成模型。
示例 JSON:
{
"displayName":"EID",
"internalName":"EID",
"fieldType":"text"
},
{
"displayName":"Name",
"internalName":"PersonName",
"fieldType":"text"
},
表单 HTML:
<div class="item-inner" ng-if="f.fieldType == 'text'">
<div class="item-title item-label">{{f.displayName}}</div>
<div class="item-input-wrap">
<input type="text" placeholder="" name="{{f.internalName}}"
ng-model="formData[f.internalName]"
[disabled]="formData['EID'].length >1">
<span class="input-clear-button"></span>
</div>
</div>
JS文件:
$scope.formData = {};
$scope.submit = function () {
$http({
method: 'POST',
url: '/api/postForm',
data: JSON.stringify(this.formData),
headers: { 'Content-Type': 'application/json' }
}).then(function (response) {
console.log(response);
alert('success');
}, function (error) {
alert('fail');
});
};
似乎不起作用的是我的禁用声明 - 如果 EID 输入字段中有值,我正在尝试禁用任何字段。我不确定如何引用动态模型名称。我还预见到 EID 字段在输入后会自行禁用的问题。
解决方案
正如评论中提到的,[disabled]
angularjs 中没有(模板中的方括号是新 angular 的绑定),因此动态更改禁用状态的方法是使用 ng-disabled 指令,如下所示:
<div class="item-inner" ng-if="f.fieldType == 'text'">
<div class="item-title item-label">{{f.displayName}}</div>
<div class="item-input-wrap">
<input type="text" placeholder="" name="{{f.internalName}}"
ng-model="formData[f.internalName]"
ng-disabled="formData[f.internalName].length >1"/>
<span class="input-clear-button"></span>
</div>
</div>
推荐阅读
- jquery - 我已经通过 jquery 插入了 linearGradient 标签 svg,但是 Gradient g 变小了我应该怎么做?
- actionscript-3 - 在 Datagride 中为动态列设置值
- c++ - 如何通过c ++将圆圈写入ppm文件
- python - 使用 impyla 执行时如何在配置单元查询中传递参数?
- php - 如何在条纹中保留长达 90 天的付款
- javascript - angular ngModel 在浏览器控制台中生成太多错误
- java - 通过在 Android 中使用不同的 String 对象生成的源文件给出“不兼容类型”的错误
- r - 为什么我会收到此错误消息:postgresqlQuickSQL 中的警告
- azure - 如何保护 azure blob 存储 url 不被任何使用开发人员工具的人检索
- r - 在 Reshape2 dcast() 中使用来自 Shiny 的多个输入