Skip to content

Instantly share code, notes, and snippets.

@alexspeller
Created March 26, 2019 12:57
Show Gist options
  • Save alexspeller/819a4b5acb03c21c2633a56234d31459 to your computer and use it in GitHub Desktop.
Save alexspeller/819a4b5acb03c21c2633a56234d31459 to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
import { computed } from "@ember/object";
import { map } from "@ember/object/computed";
const Folder = Ember.Object.extend({
subArrays: map('subfolders', 'allChildren'),
allChildren: computed('subfolders.@each.allChildren', 'subArrays.@each.[]', function() {
let children = [];
this.get('subfolders').forEach(folder => {
children.push(folder);
folder.get('allChildren').forEach(child =>
children.push(child)
)
});
return children;
})
});
const deepFolder = Folder.create({
name: "c",
subfolders: []
})
const subfolders = [
Folder.create({
name: "a",
subfolders: [
Folder.create({
name: "b",
subfolders: [
deepFolder
]
})
]
})
];
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
root: Folder.create({subfolders}),
deepFolder,
allNames: computed('root.allChildren.@each.name', function() {
let names = this.get('root.allChildren').map(child => child.get('name'));
return names.join(", ");
}),
actions: {
addDeeperFolder() {
this.get('deepFolder.subfolders').pushObject(Folder.create({name: 'Deeper Folder', subfolders: []}));
}
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
{{allNames}}
name of deeply nested folder: {{input value=deepFolder.name}}
<button {{action 'addDeeperFolder'}}>Add deeper folder</button>
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment