@ioanszabo wrote:
Hi, I use ember cli with ember 2.0. I have a model called node declared as follows:
import DS from 'ember-data'; export default DS.Model.extend({ name: DS.attr('string'), alias: DS.attr('string'), childs_count: DS.attr('number'), parent: DS.attr('number'), childs: DS.hasMany('node') });
My nodes list from back-end is like this:
{ "nodes": [ { "id": 1, "name": "Dashboard", "alias": "dashboard", "childs_count": 3, "childs": [5, 6, 7], "parent": 0 }, { "id": 2, "name": "Forms", "alias": "forms", "childs_count": 0, "childs": [], "parent": 0 }, { "id": 3, "name": "Tables", "alias": "tables", "childs_count": 0, "childs": [], "parent": 0 }, { "id": 4, "name": "Statistics", "alias": "statistics", "childs_count": 1, "childs": [8], "parent": 0 }, { "id": 5, "name": "Data Tables", "alias": "data_tables", "childs_count": 0, "childs": [], "parent": 1 }, { "id": 6, "name": "Plain Tables", "alias": "plain_tables" , "childs_count": 0, "childs": [], "parent": 1 }, { "id": 7, "name": "Media Tables", "alias": "media_tables" "childs_count": 0, "childs": [], "parent": 1 }, { "id": 8, "name": "Last Option", "alias": "last_option", "childs_count": 0, "childs": [], "parent": 4 }, { "id": 9, "name": "Level 3 Option", "alias": "level_3_option" "childs_count": 0, "childs": [], "parent": 5 } ] }
I've tried to do something recursive in template using components. Here is the menu-nodes component template:
<ul class="nodes" > {{#each nodes as |node|}} <li class="node-menu-option project-node-{{node.alias}}"> {{node-menu-option node=node}} </li> {{/each}} </ul>
and here is the node-menu-option template:
{{#link-to 'node' node.alias class="node-menu-option-link"}} {{node.name}} {{#if node.warnings_count}} <span class="label label-warning">{{node.warnings_count}}</span> {{/if}} {{#if node.infos_count}} <span class="label label-info">{{node.infos_count}}</span> {{/if}} {{/link-to}} {{! show childs nodes }} {{node.childs_count}} {{#if node.childs_count}} {{nodes-menu nodes=node.childs}} {{/if}}
and in application template I have this:
<aside class="sidebar-menu"> {{nodes-menu nodes=model.nodes}} </aside>
My result on page is something like this:
Dashboard 10 3 Forms 0 Tables 3 0 Statistics 1 Data Tables 0 Plain Tables 0 Media Tables 0 Last Option 0 Level 3 Option 0
Normally, "Data Tables", "Plain Tables" and "Media Tables" should be after "Dashboard". I hope I didn't put to much info. I tried to simplify my model and results.
I believe it is worth mentioning that I've try to use parent: belognsTo('node') ; I've tried adding inverse, but the results were not correct. For instance with inverse, I've got:
Dashboard 10 3 Data Tables 0 Plain Tables 0 Media Tables 0 Forms 0 Tables 3 0 Statistics 1 Data Tables 0 Plain Tables 0 Media Tables 0 Last Option 0 Level 3 Option 0
Thanks.
Posts: 1
Participants: 1