Skip to content

Instantly share code, notes, and snippets.

@pswai
Last active July 31, 2017 01:44
Show Gist options
  • Save pswai/0426217e1ba4b8094b11aa0b4992ceca to your computer and use it in GitHub Desktop.
Save pswai/0426217e1ba4b8094b11aa0b4992ceca to your computer and use it in GitHub Desktop.
Ember Set Relationship to itself
import Ember from 'ember';
export default Ember.Controller.extend({
init() {
const store = this.get('store');
const posts = [
store.createRecord('post', { title: 'foo' }),
store.createRecord('post', { title: 'bar' })
];
const author = store.createRecord('author', { id: '0', name: 'alice', posts });
this.set('author', author);
},
store: Ember.inject.service('store'),
theArrayString: Ember.computed('author.posts', function () {
return JSON.stringify(this.get('author.posts').toArray());
}),
actions: {
setPostsAgain() {
const author = this.get('author');
const postsRelationship = author.get('posts');
// NOTE: We only set the original value back
author.set('posts', postsRelationship);
}
}
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
posts: hasMany('post')
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
title: attr('string')
});
<div>
<code>author.posts.toArray(): </code> {{theArrayString}}
</div>
<button type="button" {{action 'setPostsAgain'}}>Set Posts Again</button>
{
"version": "0.12.1",
"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.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment