Wenn Sie Mithril die Routing-Funktionalität verwenden und eine ganz neue Seite zeigen möchten, Dann können Sie einen Link verwenden, anstatt eine Schaltfläche zu verwenden. (Persönlich, das ist, wie ich normalerweise antizipieren diese Szenarien Handhabung.) ZB
m("a[href=/otherPage]", { config: m.route }, "Account")
Fiddle: https://jsfiddle.net/11qjx341/
(Alternativ können Sie auch m.route('/otherPage')
innerhalb der showOtherPage
Funktion aufrufen können, wenn ein Link für einige nicht geeignet ist Wenn Sie das Mithril-Routing nicht verwenden (z. B. wenn Sie m.mount
verwenden), aber immer noch eine ganz neue Seite rendern möchten, möchten Sie möglicherweise m.mount
mit der neuen Ansicht aufrufen, um es zu haben.
gerendert zB
m.mount(document.body, otherView);
Fiddle: https://jsfiddle.net/91g9db6n/
Als dritte Option, wenn die neue Ansicht tatsächlich mit der aktuellen Seite koexistieren gemeint ist, können Sie eine Komponente haben, die basierend auf Zustand angezeigt oder ausgeblendet wird. zB
return [
m("button", { onclick: ctrl.showModal.bind(ctrl, !showModal) }, showModal ? "Hide Account" : "Account")
, showModal ? m.component(OtherView) : null
];
Fiddle: https://jsfiddle.net/mk27tfq1/
ich denke, die dritte Option ist die beste. Eine der wirklich kraftvollen Dinge, die man über Mithril verstehen kann, ist die Tatsache, dass es weniger um "jetzt mach etwas" und mehr darum geht, "den Staat so zu verändern, dass Dinge passieren". Die Ansicht drückt alle möglichen Zustände aus, in denen sich das DOM befinden kann, und ändert Bedingungen, so dass sie erfüllt werden. – Barney
Ja, es ist ein Muster, das ich oft benutze, aber ich war nicht sicher, ob ich die Frage richtig gelesen habe (die Verwendung des Wortes "Seite" vs "Komponente" :-)), und die Verwendung des Wortes "Seite" gemacht Ich orientiere mich an der Verwendung von Routing, während sich die Frage selbst auf das Rendern einer Komponente bezieht und daher Option 3 gut klingt :-) – Bryce
Vielen Dank für Ihre Antwort Bryce. Der erste Befehl ist gut für mich, aber sagen Sie mir, wenn ich falsch liege, verliere ich den Vorteil der Route Befehl, der alle Komponenten beim Start geladen. Also werde ich versuchen, die zweite Option, eine Verknüpfung mit einem Bild, um eine Schaltfläche zu simulieren. – vhoward44