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

Ember.js checkbox binding initial value set incorrectly

本文关键字:设置 不正确 js 复选框 绑定 Ember      更新时间:2023-09-26

不知怎么的,我的Ember应用程序中的复选框最初总是被选中的。

...
{{#each model.fields}}
...
  {{input type="checkbox" checked=isOptional}}

字段数组是我的模型中的一个属性。字段数组中的每个对象都有一个名为isOptional的属性,它可以是"true"或"false"。

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

如果我手动选中复选框,isOptional标志实际上会被更改。因此,除了检测初始值之外,绑定还起作用。

非常感谢您的帮助,谢谢!


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

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

一个可以摆弄的jsbin示例http://emberjs.jsbin.com/kukokiti/1/

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

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

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