我发现问题是handlebars
input
设置数据。无论何种类型的数据,最终都将是一个字符串。如果我使用boolean
或date
,则会出现问题。
import DS from 'ember-data';
export default DS.Model.extend({
...
sex: DS.attr('boolean'),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date')
});
我使用select
来改变性别。 http://balinterdi.com/2015/08/29/how-to-do-a-select-dropdown-in-ember-20.html
<select onchange={{action (mut model.sex) value="model.sex"}}>
{{#each sexGroup as |sexChoice|}}
<option value={{sexChoice.value}} selected={{eq model.sex sexChoice.value}}>{{sexChoice.name}}</option>
{{/each}}
</select>
并在控制器中设置sexGroup:
sexGroup: [
Ember.Object.create({value: 1, name: "man"}),
Ember.Object.create({value: 0, name: "woman"})
]
问题在于我选择的男人或女人,Ember数据总是将真实发送到服务器。因为html选择值始终是字符串,而Ember Data attr('boolean')
得到的字符串将变为true
。
如果我必须解决这个问题,我有两种方法:
No.1(不使用boolean
,usr string
);
No.2(使用parseInt
在保存前设置值),如下所示:
this.get('model').set('sex', parseInt(this.get('sexValue')));
date
格式也有问题:What is the best way to modify the date format when ember-data does serialization?
所以我不知道Ember数据boolean
和date
属性类型的作用。特别是在使用html输入时,值总是字符串。
所以这种情况有一个很好的解决方案吗?或者我只是使用字符串?感谢。
答案 0 :(得分:1)
不使用model.sex
而是使用get
和set
的计算属性:
sexStr: Ember.computed('model.sex',{
get(){
return this.get('model.sex') ? 'male':'female';
},
set(key,value){
this.set('model.sex', value === 'male');
return value;
}
})