Javascript Ember.js复选框绑定初始值设置不正确

Javascript Ember.js复选框绑定初始值设置不正确,javascript,checkbox,ember.js,Javascript,Checkbox,Ember.js,不知何故,我的余烬应用程序中的复选框最初总是选中的 ... {{#each model.fields}} ... {{input type="checkbox" checked=isOptional}} 字段数组是我的模型中的一个属性。fields数组中的每个对象都有一个名为“等参变量”的属性,该属性可以是“true”或“false” 出于某种原因,无论isOptional的值是多少,复选框最初都是选中的 ... {{#each model.fields}} ... {{input t

不知何故,我的余烬应用程序中的复选框最初总是选中的

...
{{#each model.fields}}
...
  {{input type="checkbox" checked=isOptional}}
字段数组是我的模型中的一个属性。fields数组中的每个对象都有一个名为“等参变量”的属性,该属性可以是“true”或“false”

出于某种原因,无论isOptional的值是多少,复选框最初都是选中的

...
{{#each model.fields}}
...
  {{input type="checkbox" checked=isOptional}}
如果我手动选中该复选框,则实际上将更改等参标记。因此,绑定除了检测初始值外,还起作用

非常感谢您的帮助,谢谢


编辑:正如评论中所讨论的,问题是因为我的模型是由
Ember.$.getJSON()
返回的,它在引号中有“false”,并被解释为true值,从而导致选中复选框。我通过重写布尔值解决了这个问题:

model.fields.forEach(function(field, i) {
  Ember.set(field, 'isOptional', (field.isOptional == 'true'));
});

一个你可以随意摆弄的jsbin示例

如果您可以提供自己的jsbin,我们可以提供更多帮助

编辑:您可以在字符串值中看到“false”的效果


最简单的方法可能是在正在使用的模型上定义计算属性。

确定“等选项”属性中没有任何值吗?除了false、null或undefined之外的任何值都将导致复选框。谢谢,我认为这可能是问题所在!我使用“Ember.$.getJSON”获取我的模型,该模型在引号中返回“false”。有没有一种简单的方法让Ember将其解释为布尔值?我相信这可能会很有用——但我不使用Ember.Data,所以可能有比我更好的资源。谢谢。不,我也不使用余烬数据,也许以后不再是beta版。谢谢你的帮助。。isOptional属于model.fields数组的一个元素,因此我认为computed属性在这里可能没有帮助?更新了fiddle以显示如何执行此操作,前提是您可以在使用它之前将该对象填充到Ember.object中。我明白了。。在数组的每个元素中使用computed属性。在我的例子中,更容易遍历数组并删除引号。但这是一个很好的例子和建议。