我有一个问题,我试图在我的模型中将复选框的值发布到服务器,并且因为复选框没有在表单上进行交互,当我要求时,angular似乎没有为它赋值.它的值是未定义的.
这是我的标记:
这是我的控制器上的保存操作的简化版本:
$scope.save = function (form) { if (form.$valid) { var formData = new FormData(); // this is the problem line of code formData.append("disabled", $scope.template.disabled); // ... some other stuff } };
实际上,在我点击保存操作之前勾选然后取消选中复选框会导致template.disabled属性为false,这是我没有任何人工干预的预期.
我已经看到了其他相关问题,例如AngularJS:初始复选框值不在模型中,但肯定会像一个简单的复选框那样被烘焙?我不一定要写指令来管理复选框吗?
当页面加载(或刷新)时,以下内容将始终将状态设置为"未选中".换句话说,只要刷新页面,它就会覆盖用户的实际选择.
<input type="checkbox" ng-model="template.disabled" ng-init="template.disabled=false" />
但是,如果您希望最初将复选框状态设置为默认状态,并且您还希望它记住用户交互,那么以下是您想要的.
<input type="checkbox" ng-model="template.disabled" ng-init="template.disabled = template.disabled || false" />
这是每个设计.如果您想在模型上使用默认值,而不是在控制器内部初始化它(推荐),或者使用ng-init
.
app.controller('AppController', [ '$scope', function($scope) { $scope.template = { disabled = false }; } ] );
<div class="form-group"> <input type="checkbox" ng-model="template.disabled" ng-init="template.disabled=false" /> <label>Disabled</label> </div>