Das Problem ist, dass ich zwei Ebenen Menü haben möchte. Die zweite Ebene für jedes Menüelement wird nach dem Klick angezeigt. Wenn Sie erneut klicken, sollten Untermenüs ausgeblendet werden. Also dachte ich mir, dass ich das tun kann, indem ich die CSS-Klasse in den Menüelementen der ersten Ebene umschalte.Ember ändern Objekteigenschaft in Aktion
Component.js - bis jetzt möchte ich 2 Hauptmenüelemente haben.
menus: [{
'name': 'Dashboard',
'icon': 'dashboard',
'active': false,
submenus: [{
...
}]
},
{
'name': 'Settings',
'icon': 'cloud',
'active': false,
submenus: [{
...
}],
}
],
Und in der Vorlage erzeuge ich dynamisch HTML-Elemente. Ich habe die aktive Eigenschaft mit der Klasse verknüpft. Wenn sie sich in component.js ändert, sollte sie die CSS-Klasse beeinflussen.
{{#each menus as |menu|}}
<li class="collapsible" {{bind-attr class="menu.active:active"}} {{action 'toggle' menu}}>
<a ><span class="glyphicon glyphicon-{{menu.icon}}"></span>{{menu.name}}</a>
<ul>
{{#each menu.submenus as |submenu|}}
{{#link-to submenu.route activeClass="selected" tagName="li"}}
<a href=""><{{submenu.name}}</a>
{{/link-to}}
{{/each}}
</ul>
</li>
{{/each}}
So am Ende definiere ich eine einfache Aktion für aktive Parameter der ersten Ebene Menüs Makel.
Aber damit sagt, dass ich kein Element als String angegeben haben. Und wenn ich es in menu.toggleProperty('active')
ändern, heißt es, dass toggleProperty keine Funktion ist.
Können Sie mich beraten? Danke
Welche Version von Ember.js verwenden Sie? 'bind-attr' ist vor 2.0. – locks
Es hört sich so an, als wäre 'menu' kein Ember.Object, also hätte es nicht die' toggleProperty' Methode zur Verfügung. – locks
Ember-Version ist 2.3.0. Wenn ich im Logging-Menü bin, druckt es das Objekt korrekt, aber wenn ich versuche, toggleProperty auszuführen, sagt es, dass es keine Funktion ist. P. - Danke für den Beitrag – Bob