Javascript AngularJS复选框模型值未定义

Javascript AngularJS复选框模型值未定义,javascript,angularjs,checkbox,Javascript,Angularjs,Checkbox,我有一个问题,我试图将模型中复选框的值发布到服务器,由于该复选框未在表单上交互,angular似乎没有为其分配值,当我请求复选框的值时,它返回为未定义 这是我的标记: <div class="form-group"> <input id="templateDisable" type="checkbox" ng-model="template.disabled" /> <label for="templateDisable">Disabled&l

我有一个问题,我试图将模型中复选框的值发布到服务器,由于该复选框未在表单上交互,angular似乎没有为其分配值,当我请求复选框的值时,它返回为未定义

这是我的标记:

<div class="form-group">
    <input id="templateDisable" type="checkbox" ng-model="template.disabled" />
    <label for="templateDisable">Disabled</label>
</div>
实际上,在点击保存操作之前勾选然后取消勾选复选框会导致template.disabled属性为false,这是我在没有任何手动干预的情况下所期望的


我见过其他相关的问题,例如,但是像一个简单的复选框这样的东西肯定应该加入吗?我当然不必写指令来管理复选框?

这是每种设计。如果您想要模型上的默认值,则应在控制器内对其进行初始化(推荐),或使用
ng init


残废

加载(或刷新)页面时,以下内容将始终将状态设置回“未选中”。换句话说,每当刷新页面时,它将覆盖用户的实际选择

<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" />


不定义模型属性有什么好处?我想说有几个好处。a) 模型不会通过简单地将其附加到控件而进行隐式更改。那会是个糟糕的设计,伊姆霍。b) 保持一致性,因为如果复选框在默认情况下将模型设置为false,那么我猜文本输入还必须将初始值设置为空字符串“”,以保持一致性。但这也是一个糟糕的设计。正如@NeilAtkinson在下面指出的,这总是会将值设置为false,即使最初是true。
<div class="form-group">
  <input type="checkbox" ng-model="template.disabled" ng-init="template.disabled=false" />
  <label>Disabled</label>
</div>
<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" />