Если вы используете функции маршрутизации MITHRIL и хотите, чтобы показать всю новую страницу, то вы можете использовать ссылку, а не использовать кнопку. (Лично, это, как я обычно ожидать обработки этих сценариев.), Например,
m("a[href=/otherPage]", { config: m.route }, "Account")
Fiddle: https://jsfiddle.net/11qjx341/
(В качестве альтернативы, вы можете также позвонить m.route('/otherPage')
в функции showOtherPage
если ссылка не подходит для некоторых причина.)
Или, если вы не используете маршрутизацию Мифрила (например, если вы используете m.mount
), но все же хотите отобразить целую новую страницу, вы можете позвонить m.mount
с новым представлением оказаны. например
m.mount(document.body, otherView);
Fiddle: https://jsfiddle.net/91g9db6n/
В качестве третьего варианта, если ваш новый взгляд на самом деле имел в виду, чтобы сосуществовать с текущей страницы, вы можете иметь компонент, который отображается или скрытый на основе состояния. например
return [
m("button", { onclick: ctrl.showModal.bind(ctrl, !showModal) }, showModal ? "Hide Account" : "Account")
, showModal ? m.component(OtherView) : null
];
Fiddle: https://jsfiddle.net/mk27tfq1/
Я думаю, что третий вариант является лучшим. Одна из действительно мощных вещей, которые нужно понять о Мифриле, это тот факт, что речь идет о «сейчас что-то» и о «изменении состояния, такого, что происходит». Представление выражает все возможные состояния, в которых может находиться DOM, и изменяет условия, при которых выполняются. – Barney
Да, это шаблон, который я использую много, но я не был уверен, правильно ли прочитал вопрос (использование слова «страница» и «компонент» :-)), и использование слова «страница» сделано я склоняюсь к использованию маршрутизации, в то время как сам вопрос относится к рендерингу компонента, и, следовательно, вариант 3 звучит хорошо :-) – Bryce
Большое спасибо за ваш ответ Брайс. Команда кулака хороша для меня, но скажите, если я ошибаюсь, я теряю преимущество команды route, которая загружает все компоненты при запуске. Так что я попытаюсь использовать второй вариант, ссылку на изображение, чтобы имитировать кнопку. – vhoward44