当前位置: 首页 > 面试题库 >

单选按钮ng-checked with ng-model

姬欣怡
2023-03-14
问题内容

在我的HTML页面中,我有两组基于布尔的单选按钮:分别标记为“是”和“否” /值:分别为 TrueFalse
。我正在从PostgreSQL数据库表中填充完整的表单,以允许经过身份验证的用户查看包含填充数据的表单,并编辑包含单选按钮的填充字段,然后保存将数据保存到DB的表单。所有其他文本字段都可以毫无问题地填充;这都是单选按钮的集合我在单选按钮的预选标记方面遇到了问题。

以下内容并未预先填充选中的前端(而是在HTML源代码中添加了 选中 的正确属性):

    <input id="billing-no" type="radio" name="billing" ng-model="person.billing" value="FALSE" ng-checked="person.billing == 'false'" />
    <input id="billing-yes" type="radio" name="billing" ng-model="person.billing" value="TRUE" ng-checked="person.billing == 'true'" />

但是,这确实会检查加载时正确的单选按钮:

    <input id="billing-no" type="radio" name="billing" value="FALSE" ng-checked="person.billing == 'false'" />
    <input id="billing-yes" type="radio" name="billing" value="TRUE" ng-checked="person.billing == 'true'" />

注意: 我需要检查指令ng-
checked中的字符串布尔值,因为布尔值总是作为PostgreSQL的字符串返回。当从具有布尔数据类型的列中查询数据时,这显然是PostgreSQL设计的一部分。

添加ng-model指令时,不再选中单选按钮(至少在呈现的浏览器视图中)。奇怪的是,我查看了源,并且清楚地检查了正确的源。更奇怪的是,我必须单击 两次
单选按钮以“检查”它。我已经在最新版本的Chrome,FF和IE中对此进行了测试,所有这些都会导致同一问题。

问题是:添加ng-model指令时,为什么HTML源代码会在单选按钮属性中添加“选中”,但似乎并未标记单选按钮?此外,为什么我必须在应该检查的单选按钮上单击两次?

解决方案: 要解决此问题,我从单选按钮中删除了ng-checked指令,仅按照@Cypher和@aet的建议使用了ng-model。然后,我用指令ng-value“ true”&“ false” 替换了属性 。之后,我在控制器中设置值。

HTML

<input id="billing-no" type="radio" name="billing" ng-model="person.billing" ng-value="false" />
<input id="billing-yes" type="radio" name="billing" ng-model="person.billing" ng-value="true" />

JS

app.controller('peopleCtrl', function($scope, peopleFactory){
    ...
    peopleFactory.getPerson(personParams).then(function(data){
        $scope.person = data;
        /* moved from ng-checked */
        $scope.person.billing = data.billing == 'true';
    });
    ...
};

问题答案:

我认为您应该只使用ng-
model并且应该对您来说效果很好,这是有角度的https://docs.angularjs.org/api/ng/input/input%5Bradio%5D官方文档的链接

示例中的代码应该不难适应您的特定情况:

<script>
   function Ctrl($scope) {
      $scope.color = 'blue';
      $scope.specialValue = {
         "id": "12345",
         "value": "green"
      };
   }
</script>
<form name="myForm" ng-controller="Ctrl">
   <input type="radio" ng-model="color" value="red">  Red <br/>
   <input type="radio" ng-model="color" ng-value="specialValue"> Green <br/>
   <input type="radio" ng-model="color" value="blue"> Blue <br/>
   <tt>color = {{color | json}}</tt><br/>
</form>


 类似资料:
  • 主要内容:创建单选按钮,单选按钮组,单选按钮事件,单选按钮焦点单选按钮通常组合在一起,以便用户进行单选,即用户只能在单选按钮列表中选择一个项目。 例如,当选择鞋子尺寸时,我们通常从列表中选择一个尺寸。 单选按钮只能执行:选择或取消选择。 以下代码显示,当放置在中时,只能选择一个。 上面的代码生成以下结果。 创建单选按钮 包中的类有两个构造函数。 要为其标签创建一个带有空字符串的单选按钮,然后再设置标签。 要创建具有指定标签的单选按钮。 方法带有参数可以显式选

  • 主要内容:硬编码的单选按钮,单选按钮内项,由地图生成的单选按钮以下部分显示如何使用JSF中的创建单选按钮。 标签呈现一组类型为“”的HTML输入元素,并使用HTML表格和标签标签进行格式化。 以下JSF代码 - 被渲染生成以下HTML代码 - 硬编码的单选按钮 以下是文件: 中的代码。 以下是文件: 中的代码 - 以下是文件: 中的代码 - 单选按钮内项 以下是文件: 中的代码。 以下是文件: 中的代码。 以下是文件: 中的代码。 由地图生成的单选按钮 以下

  • 问题内容: 我知道在某些Google线程中已经提到了这一点,但是我仍然找不到将无线电输入绑定到模型的正确解决方案(以简洁的方式), 目前,我有HTML: 在控制器中: 这不起作用(与复选框相同)… 关于如何在不丢失数据绑定的情况下在第一个单选按钮上设置默认值的任何想法? 谢谢! 问题答案: 我认为您应该在这两个单选按钮中使用具有不同值的相同变量。 然后,您应该根据用户输入设置“ Rma”或“ De

  • import { Radio } from 'feui'; components: { [Radio.name]: Radio }, data() { return { radio001: ["安徽", "北京"], radio001Value: "安徽", radio002Value: "北京", radio003: [ {

  • import { Checkicon } from 'feui'; components: { [Checkicon.name]: Checkicon } data () { return { demo1: false, demo2: true, demo3: false, demo4: true } } 代码演示 左对齐 <f

  • 问题内容: http://plnkr.co/edit/RP9SpO1qGjn5Ua6pZJ3D?p=preview js 和html 注意,根据半径范围结构检查了“ 2 Mile”无线电输入。为什么ng-change不触发功能? 如果我添加ng-model,则该函数会触发,但是ng-checked无法正常工作。 问题答案: 这是因为您没有使用: plnkr 更新: 很抱歉,我没有注意到您要检查默认