当使用ng true和ng false时,Angular ng模型需要单击2次

时间:2017-02-24 09:52:11

标签: javascript angularjs

我使用带有ng模型和ng-true-value和ng-false-value的复选框。 它工作正常,但当它的值为1并且默认情况下进行检查时,将需要2次点击才能更改该值。

首次点击是否有任何方法

代码示例:

<input type="checkbox" ng-checked="CreateUpdateCat.IsDiscussionAllowed=='1'" ng-model="CreateUpdateCat.IsDiscussionAllowed" ng-true-value="1" ng-false-value="2" >

控制器代码:

angular.forEach($scope.CategoryData,function(v,k){
                        if(v.id == id)
                        {
$scope.CreateUpdateCat = {IsDiscussionAllowed:v.IsDiscussionAllowed,Name:v.Name};
};
});

这里是plunkr网址:https://plnkr.co/edit/JApepZfvNrlqDj9vine0?p=preview 默认值为1,但复选框未显示已选中

4 个答案:

答案 0 :(得分:2)

使用ng-checkedng-model,否则角度会混淆。你可能会得到不可预知的结果。

只能使用一个指令ng-checkedng-model

答案 1 :(得分:0)

ng-checked不应该与ng-model一起使用,否则你会得到意想不到的行为, ng-check docs:https://docs.angularjs.org/api/ng/directive/ngChecked

使用

 <input type="checkbox" ng-model="checkboxModel.value"
       ng-true-value="'YES'" ng-false-value="'NO'">

OR

<input type="checkbox" ng-checked="checkboxModel.value"
       ng-true-value="'YES'" ng-false-value="'NO'">

答案 2 :(得分:0)

尝试按此输入

<input type="checkbox" ng-model="CreateUpdateCat.IsDiscussionAllowed" ng-true-value="'1'" ng-false-value="'2'">

在您的plunker上,de scope CreateUpdateCat值是字符串。

答案 3 :(得分:0)

有时候angualrjs范围会变得很脏,你可能想要使用它:

$timeout(function(){
  angular.forEach($scope.CategoryData,function(v,k){
   if(v.id == id){
      $scope.CreateUpdateCat = {IsDiscussionAllowed:v.IsDiscussionAllowed,Name:v.Name};
    };
  });
});

这样,模型会将自身更新为dom元素的价值