ミスリルのコツをつかもうとしても、ひとつのことがよくわからない。イベントでコンポーネントをレンダリングできますか?
親コンポーネントが 1 つあるとします。
var MyApp = {
view: function() {
return m("div", [
m.component(MyApp.header, {}),
m("div", {id: "menu-container"})
])
}
};
m.mount(document.body, megogo.main);
ヘッダー コンポーネント (およびメニューのプレースホルダー (必要ですか?)) をレンダリングします。
MyApp.header = {
view: function() {
return m("div", {
id: 'app-header'
}, [
m('a', {
href: '#',
id: 'menu-button',
onclick: function(){
// this part is just for reference
m.component(MyApp.menu, {})
}
}, 'Menu')
])
}
}
ユーザーがメニュー リンクをクリックすると、API からメニュー項目をロードしてから、メニューをレンダリングします。
MyApp.menu = {
controller: function() {
var categories = m.request({method: "GET", url: "https://api.site.com/?params"});
return {categories: categories};
},
view: function(ctrl) {
return m("div", ctrl.categories().data.items.map(function(item) {
return m("a", {
href: "#",
class: 'link-button',
onkeydown: MyApp.menu.keydown
}, item.title)
}));
},
keydown: function(e){
e.preventDefault();
var code = e.keyCode || e.which;
switch(code){
// ...
}
}
};
この部分は明らかに機能しません
onclick: function(){
// this part is just for reference
m.component(MyApp.menu, {})
}
では、問題は、イベントでコンポーネントをレンダリングする正しい方法は何ですか?