javascript - 必须单击单选按钮两次才能使用 AngularJS 更改 html 元素

标签 javascript html angularjs

我有一个非常简单的表单,其中有"is"和“否”单选按钮。每个单选按钮都绑定(bind)到范围中的同一个项目(我使用的是 AngularJS)。 "is"按钮的值在被选择时设置为 true,“否”按钮的值在被选择时设置为 false。

当我单击"is"按钮一次时,模型和 html 元素都会正确更改。但是,当我单击“否”单选按钮时,模型会正确更改,但 html 元素不会被选中。如果我再次单击“否”单选按钮,html 元素就会更改为正确的选定状态。

下面的示例只是较大 html 页面和 Controller 的一部分,但我保持 Angular 模型结构相同,因为这可能是问题所在。

HTML:

<div ng-app="myApp">
  <div ng-conroller="MyController">
    <div>
                <label>
                    <input type="radio" name="IsBeingPaid" ng-model="item.isBeingPaid" ng-checked="item.isBeingPaid" value="true"/>
                    Yes
                </label>
            </div>
            <div class="radio">
                <label>
                    <input type="radio" name="IsBeingPaid" ng-model="item.isBeingPaid" ng-checked="!item.isBeingPaid" value="false"/>
                    No 
                </label>
                <p>{{item.isBeingPaid}}</p>
            </div>
  </div>
</div>

Controller :

var app = angular.module('myApp', [
  'my.controllers'
]);

var controllers = angular.module('my.controllers', []);
controllers.controller('MyController', function($scope) {
    $scope.item = {};
});

我创建了这个 fiddle 来演示这个问题。

http://jsfiddle.net/prajna78/Tdq9n/14/

我错过了什么?这看起来是一件很简单的事情。

最佳答案

您的代码存在一些问题。

首先,在单选按钮元素中使用 ng-value 而不是 value。这可确保您绑定(bind)的值是 bool 值 (true),而不是字符串 ("true")。另外,您不需要 ng-checked (ng-model 就足够了)。

<input type="radio" name="IsBeingPaidMinimumWage" ng-model="isBeingPaidMinimumWage" ng-value="true"/>

此外,您正在绑定(bind)到 item.isBeingPaidMinimumWage,但您的 $scope 变量只是 isBeingPaidMinimumWage,因此您的初始值 Controller 中的分配不会反射(reflect)在 View 中。

Demo

关于javascript - 必须单击单选按钮两次才能使用 AngularJS 更改 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152583/

相关文章:

javascript - 如何获取选定的下拉值

javascript - 当innerHtml随Ajax发生变化时,如何调用javascript函数来运行?

javascript - 不在网页上动态附加输入字符串

angularjs - Ngtable:需要明确的表头并选择过滤器

javascript - 当我在 $watch 中更改观察者模式时,Angular Watch 不会触发

javascript - karma - Jasmine : Error: Unexpected request: POST

javascript - 如何将href标签之间的url发送到外部表单?

html - Bootstrap 图像调整大小以适应不同的屏幕

javascript - 间接触发 UI 事件

javascript - $.get 总是得到不需要的字符串