Lassen Sie uns sagen, dass ich eine einfache Komponente in Schimmer haben mit einer Liste von ElementenWie bekomme ich den übergeordneten Kontext aus einer Komponente in glimmer?
<todo-list @items={{ items }}></todo-list>
template.hbs
<ul>
{{#each @items key="@index" as |item|}}
<li onclick={{ action clickme }}>{{ item }}</li>
{{/each}}
</ul>
component.ts
import Component, { tracked } from '@glimmer/component';
export default class TodoList extends Component {
constructor(options) {
super(options);
}
clickme() {
// how do I access the parent context from here?
}
}
Auch wenn ich in einer Aktion übergeben vom Elternteil
<todo-list @items={{ items }} @rootclickme={{ rootclickme }}></todo-list>
aktualisiert, template.hbs
<ul>
{{#each @items key="@index" as |item|}}
<li onclick={{ action @rootclickme }}>{{ item }}</li>
{{/each}}
</ul>
in meinem äußeren component.ts
rootclickme() {
// I don't have access to parent variables here either?
// only what's within the scope of the function itself?
}
Was ich versuche, eine Komponente mit einer Liste zu tun ist, haben. Wenn auf ein Listenelement geklickt wird, möchte ich, dass ein Klickereignis nach oben geleitet wird, sodass die übergeordnete Komponente entscheiden kann, die Liste auszublenden und eine detailliertere Ansicht für dieses ausgewählte Element anzuzeigen.
Wie mache ich das im Glimmer? In reagiere ich vorbei würde
Hinweis: Ich bin nicht voll Ember.js verwenden, glimmer.js nur Standalone
Wenn Sie die Aktion binden, sollte sie '@rootclickme = {{action rootclickme}}' sein. Mit Hilfe des 'action'-Helfers wird sichergestellt, dass das' this' des Callbacks an die richtige Komponente gebunden ist. – locks
Sie scheinen auch Ihren Beitrag kurz geschnitten zu haben? "In Reaktion würde ich passieren". – locks