使用带有 ember 数据的 postgres json 字段
Using postgres json field with ember data
我有一个 rails api 吐出一个名为 colors
的类型 json
的 postgres 字段。我有一系列可以更改的输入字段,我希望可以在每个字段更改时修改此 json 对象上的键,但绑定似乎没有按预期工作。
数据如下:
"colors": { "primary_color": "#c43535", "secondary_color": "#0000FF" }
我的输入如下:
{{input type="text" class="form-control" value=model.colors.primary_color}}
{{input type="text" class="form-control" value=model.colors.secondary_color}}
这会在字段中显示正确的颜色,但是当我更新字段时,JSON 对象在 Ember 检查器中似乎没有更新。
到目前为止我已经尝试了三种不同的转换:
json.js
export default DS.Transform.extend({
deserialize: function(serialized) {
return JSON.parse(serialized);
},
serialize: function(deserialized) {
return JSON.stringify(deserialized);
}
});
raw.js
import DS from 'ember-data';
export default DS.Transform.extend({
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
object.js
export default DS.Transform.extend({
deserialize: function(serialized) {
return Ember.isNone(serialized) ? {} : serialized;
},
serialize: function(deserialized) {
return Ember.isNone(deserialized) ? {} : deserialized;
}
});
所有 出现 具有相同的结果,即更新字段不会修改对象。我如何 serialize/bind/update 具有 ember 数据的 json 对象?
通过在DS.attr()
中不指定类型,它只是传递原始对象,你可以在这里看到:http://emberjs.jsbin.com/zitobi/2/edit
在这种情况下,我认为。序列化,就是把对象变成一个普通的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
我有一个 rails api 吐出一个名为 colors
的类型 json
的 postgres 字段。我有一系列可以更改的输入字段,我希望可以在每个字段更改时修改此 json 对象上的键,但绑定似乎没有按预期工作。
数据如下:
"colors": { "primary_color": "#c43535", "secondary_color": "#0000FF" }
我的输入如下:
{{input type="text" class="form-control" value=model.colors.primary_color}}
{{input type="text" class="form-control" value=model.colors.secondary_color}}
这会在字段中显示正确的颜色,但是当我更新字段时,JSON 对象在 Ember 检查器中似乎没有更新。
到目前为止我已经尝试了三种不同的转换:
json.js
export default DS.Transform.extend({
deserialize: function(serialized) {
return JSON.parse(serialized);
},
serialize: function(deserialized) {
return JSON.stringify(deserialized);
}
});
raw.js
import DS from 'ember-data';
export default DS.Transform.extend({
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
object.js
export default DS.Transform.extend({
deserialize: function(serialized) {
return Ember.isNone(serialized) ? {} : serialized;
},
serialize: function(deserialized) {
return Ember.isNone(deserialized) ? {} : deserialized;
}
});
所有 出现 具有相同的结果,即更新字段不会修改对象。我如何 serialize/bind/update 具有 ember 数据的 json 对象?
通过在DS.attr()
中不指定类型,它只是传递原始对象,你可以在这里看到:http://emberjs.jsbin.com/zitobi/2/edit
在这种情况下,我认为。序列化,就是把对象变成一个普通的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