在单选按钮中使用布尔数据的正确方法是什么.如果直接使用,这些值将从布尔值转换为字符串.
预加载的输入字段的JSON数据:
var question = [
{value: true, name: "Yes"},
{value: false, name: "Not this time"}
]
Run Code Online (Sandbox Code Playgroud)
单选按钮字段:
<input type="radio"
name="question"
onChange={this.state.onRadioChange}
value={this.state.question[0].value} /> {this.state.question[0].name}
<input type="radio"
name="question"
onChange={this.state.onRadioChange}
value={this.state.question[1].value} /> {this.state.question[1].name}
Run Code Online (Sandbox Code Playgroud)
onRadioChange的绑定:
onRadioChange: function(e) {
console.log(e.target.value);
}
Run Code Online (Sandbox Code Playgroud)
控制台日志显示所选值从布尔值转换为字符串.
处理这个问题的一种方法是在onRadioChange
函数中添加一个额外的函数,将"true"/"false"
字符串转换为布尔值,e.target.value
但感觉有点麻烦.另外,仅使用'e.target.checked'将不起作用,因为在某些单选按钮组中,我有其他值而不是布尔值(需要通过).
一些通用且干净的解决方案是使用从REST转换为REST的常量值表.
是否有任何特殊的ReactJS方法可以做到这一点?也许不吧.
如果表单字段被触摸并留空,我想警告用户。我可以检查空白字段是否被 触摸$pristine
。但如果我从 预加载表单数据$scope
,则$pristine
不起作用。另外,我不想使用required
参数,我只想注入警告样式ng-class
。
<div ng-class="{'has-warning': !form.name.$pristine}">
<input type="text" name="name" ng-model="people.name">
</div>
Run Code Online (Sandbox Code Playgroud)