我使用带有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,但复选框未显示已选中
答案 0 :(得分:2)
使用ng-checked
或ng-model
,否则角度会混淆。你可能会得到不可预知的结果。
只能使用一个指令ng-checked
或ng-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元素的价值