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

ng-checked和ng-change单选按钮无法一起使用-angularjs

从开济
2023-03-14
问题内容

http://plnkr.co/edit/RP9SpO1qGjn5Ua6pZJ3D?p=preview

js

angular.module("sampleapp", []).controller('samplecontroller', function($scope,$rootScope) {
  $scope.radii = [
    {id:.25, checked:false, name:"1/4 Mile"},
    {id:.5, checked:false, name:"1/2 Mile"},
    {id:1, checked:false, name:"1 Mile"},
    {id:2, checked:true, name:"2 Mile"},
    {id:3, checked:false, name:"3 Mile"},
    {id:4, checked:false, name:"4 Mile"},
    {id:5, checked:false, name:"5 Mile"}
];

$scope.handleRadioClick = function(){
    alert();

};
});

和html

          <div class="radio">
            <label>
              <input type="radio" name="radius"

                   ng-change="handleRadioClick()"
                   ng-checked="radius.checked">

              {{radius.name}}

            </label>
          </div>

      </li>

注意,根据半径范围结构检查了“ 2 Mile”无线电输入。为什么ng-change不触发功能

如果我添加ng-model,则该函数会触发,但是ng-checked无法正常工作。


问题答案:

这是因为您没有使用ng-model

plnkr

<div class="radio" ng-repeat="radius in radii" id="selectradius-{{radius.id}}">
  <label>
    <input type="radio" name="radius"

         ng-change="handleRadioClick(selectedRadius)"
         ng-model="radius.checked">

    {{radius.name}}

  </label>
</div>

更新:

很抱歉,我没有注意到您要检查默认单选按钮,如果是这种情况,那么您采用的方法是错误的。您必须将模型视为一组单选按钮中的非单个部分,但总体上应该将它们视为一个值。您不必使用ng- repeat的无线电范围变量,而可以使用另一个ng- model作为selectedRadius模型。您的输入单选按钮需要有一个值,在这种情况下,我们将使用它ng-value来确定模型的当前值。

更新的PLUNKER [
2014年9月 ]

JAVASCRIPT

控制者

  $scope.radii = [
    {id:.25, name:"1/4 Mile"},
    {id:.5, name:"1/2 Mile"},
    {id:1, name:"1 Mile"},
    {id:2, name:"2 Mile"},
    {id:3, name:"3 Mile"},
    {id:4, name:"4 Mile"},
    {id:5, name:"5 Mile"}
  ];

  // selected value is {id:2, name:"2 Mile"}
  $scope.selectedRadius = $scope.radii[3];

HTML

<div class="radio" ng-repeat="radius in radii" id="selectradius-{{radius.id}}">
  <label>
    <input type="radio" name="radius"

         ng-change="handleRadioClick(radius)"
         ng-model="selectedRadius"
         ng-value="radius">

    {{radius.name}}

  </label>
</div>

更新的 [ 2015年1月 ]

dcz.switcher的以下问题表明,ng-change重新选择单选按钮时,上述解决方案不会触发事件处理程序。主要问题在于,从第二次更改ng-model开始,引用的ng-repeat是范围,而不是控制器的范围。要解决此问题,可以使用该$parent属性。一种替代方法是使用controllerAs别名,并使用别名本身来访问控制器的属性。要了解有关AngularJS范围的更多信息,建议您在此处阅读有关它的更多信息

的HTML

<div class="radio" ng-repeat="radius in radii" id="selectradius-{{radius.id}}">
  <label>
    <input type="radio" name="radius"

         ng-change="handleRadioClick($parent.selectedRadius)"
         ng-model="$parent.selectedRadius"
         ng-value="radius">

    {{radius.name}}

  </label>
</div>


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

  • 问题内容: 当前,我们可以通过几种方式监视数据更改。我们可以使用触发模型更改,并且可以向元素添加指令并对其绑定一些操作。 在许多情况下,这有点令人困惑,所以我很好奇,这是每个变体的优缺点,何时应该使用绑定,何时使用诸如?的指令? 问题答案: 两者和具有完全不同的用法: 假设您有一个在范围内定义的模型: 现在,如果您想在发生任何更改时执行某些操作,则可以使用: 是一个指令,当用户更改输入时将评估给定

  • 所以,我有一个关于超文本标记语言中输入类型无线电的问题。如你所知,你可以把作为一个值,这将把它标记为选中。 故事是这样的:我从数据库中得到一个0或1的值,然后检查它是0还是1,然后将其中一个单选按钮标记为选中。 我的代码如下: 我现在的问题是,每当我试图通过单击它来标记另一个单选按钮为选中时,两个单选按钮都被选中? 我认为这可能与我检查从数据库返回的值是0还是1有关,它会一直检查其中一个单选按钮,

  • 本文向大家介绍ng-options和ng-checked在表单中的高级运用(推荐),包括了ng-options和ng-checked在表单中的高级运用(推荐)的使用技巧和注意事项,需要的朋友参考一下 AngularJS是当前非常的流行的前端框架,它的语法糖非常多,也极大的方便了前端开发者,但是有着用法还是需要去琢磨一下的。 ng-options 在select表单控件中,总结一下目前的几种写法。

  • 我是Angular的新手,我正在尝试获取用户使用ng模型选择的单选按钮的值。但我在“选定联系人”中没有得到任何输出。 这是我的HTML 以下是我的主要内容.js 我在这里做错了什么?搞不清楚!!!

  • 问题内容: 给定以下选择元素 有没有办法使MAGIC_THING等于当前选择的大小,因此我可以访问并在我的控制器中? size.code影响了应用程序的许多其他部分(图像网址等),但是当的ng-model 更新时,面向用户的东西也需要更新。我认为执行此操作的正确方法是捕获更改事件并在控制器内部设置值,但是我不确定可以将哪些内容传递给update以获取正确的值。 如果这是完全错误的解决方法,我很想知