我有一个rails api,它会吐出一个名为json
的{{1}}类型的postgres字段。我有一系列可以更改的输入字段,我希望在每个字段更改时可以修改此json对象上的键,但绑定似乎没有按预期工作。
数据如下:
colors
我的输入如下:
"colors": { "primary_color": "#c43535", "secondary_color": "#0000FF" }
这会在字段中显示正确的颜色,但是当我更新字段时,JSON对象似乎不会在Ember检查器中更新。
到目前为止,我尝试了三种不同的变换:
json.js
{{input type="text" class="form-control" value=model.colors.primary_color}}
{{input type="text" class="form-control" value=model.colors.secondary_color}}
raw.js
export default DS.Transform.extend({
deserialize: function(serialized) {
return JSON.parse(serialized);
},
serialize: function(deserialized) {
return JSON.stringify(deserialized);
}
});
object.js
import DS from 'ember-data';
export default DS.Transform.extend({
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
所有出现以获得相同的结果,更新字段不会修改对象。如何使用像这样的ember-data序列化/绑定/更新json对象?
答案 0 :(得分:2)
如果没有在DS.attr()
中指定类型,它只是传递原始对象,您可以在此处看到:http://emberjs.jsbin.com/zitobi/2/edit
答案 1 :(得分:1)
在这种情况下,我认为。序列化,意味着将对象变为常规JSON对象并反序列化,意味着将其变为Ember对象。
App.PrimaryColorTransform = DS.Transform.extend({
serialize: function(value) {
return value.get('primary_color');
},
deserialize: function(value) {
return Ember.create({ primary_color: value[0]});
}
});
App.Color = DS.Model.extend({
primary_color: DS.attr('primaryColor'),
});
http://emberjs.com/guides/models/the-rest-adapter/#toc_creating-custom-transformations