【问题标题】:Ember.js checkbox binding initial value set incorrectlyEmber.js 复选框绑定初始值设置不正确
【发布时间】:2014-08-28 01:08:12
【问题描述】:

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

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

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

出于某种原因,无论 isOptional 的值如何,最初都会选中复选框。

如果我手动选中复选框,isOptional 标志实际上会被更改。所以除了检测初始值之外,绑定是有效的。

非常感谢任何帮助,谢谢!


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

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

【问题讨论】:

  • 您确定 isOptional 属性中没有任何值吗?具有除 false、null 或 undefined 之外的任何值都会导致选中框。
  • 谢谢,我认为这可能是问题所在!我使用“Ember.$.getJSON”来获取我的模型,它在引号中返回“false”。有没有简单的方法让 Ember 将其解释为布尔值?
  • 我相信这可能很有用 - emberjs.com/api/data/classes/DS.BooleanTransform.html - 但TBH我不使用 Ember.Data 所以可能有比我更好的资源。
  • 谢谢。不,我也没有使用 Ember 数据,也许稍后它不再是测试版。

标签: javascript checkbox ember.js


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的帮助。isOptional 属于 model.fields 数组的一个元素,所以我认为计算属性在这里可能没有帮助?
  • 更新了 fiddle 以展示你如何做到这一点,如果你可以在使用它之前将对象填充到 Ember.Object 中。
  • 我明白了.. 在数组的每个元素中使用计算属性。那么在我的情况下,通过数组并删除引号会更容易。但这是一个很好的例子和建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 2018-01-09
相关资源
最近更新 更多