Skip to content

Instantly share code, notes, and snippets.

@gmarquet
Created February 20, 2017 12:28
Show Gist options
  • Save gmarquet/cfe577e9356fe1174974afab8331c278 to your computer and use it in GitHub Desktop.
Save gmarquet/cfe577e9356fe1174974afab8331c278 to your computer and use it in GitHub Desktop.
Serialize computed property
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
serialilized: Ember.computed('model.{name,isNamed}', function(){
return this.get('model').serialize().data.attributes;
}),
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
name: attr(),
isNamed: Ember.computed.bool('name'),
});
import Ember from 'ember';
export default Ember.Route.extend({
model(){
return this.store.createRecord('my-model', {name: 'John'});
}
});
import JSONAPISerializer from 'ember-data/serializers/json-api';
export default JSONAPISerializer.extend( {
attrs: {
// isNamed: { serialize: true },
},
serialize(snapshot, options) {
var json = this._super(...arguments);
json.data.attributes.isNamed = snapshot.record.get('isNamed');
return json;
},
});
<strong>Model :</strong> <br>
Name: {{input value=model.name}} <br>
isNamed: {{model.isNamed}}<br>
<hr>
<strong>Serialized attributes :</strong><br>
{{#each-in serialilized as |key value|}}
{{key}} : {{value}} <br>
{{/each-in}}
<br>
{
"version": "0.11.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.10.2",
"ember-data": "2.11.0",
"ember-template-compiler": "2.10.2",
"ember-testing": "2.10.2"
},
"addons": {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment