@ArthurClemens と @barneycarroll から、Gitter チャットを通じて、1 つのアプリケーションで m.mount() と m.route() の両方を使用することは推奨されない方法であると言われました。@barneycarroll が提供する 1 つの解決策は、m.route() のみを使用し、以下のようなアプリケーションの他の共通部分と共にページ ビューを返す関数を使用することです (jsbin はこちら)。
var header = {
view : function(){
return m( "h1", "This is the persistent site header" )
}
}
var nav = {
controller : function(){
this.links = [
[ "/", "Home" ],
[ "/select_company", "Companies" ]
]
},
view : function( ctrl ){
return m( "ul",
ctrl.links.map( function( link ){
return m( "li",
m( "a", {
config : m.route,
href : link[ 0 ]
}, link[ 1 ] )
)
} )
)
}
}
function furnish( component ){
return {
view : function(){
return [
header,
nav,
component
]
}
}
}
var home = {
view : function(){
return m( "h2", "Welcome!" )
}
}
var selectCompany = {
view : function(){
return m( "h2", "Please select a company" )
}
}
m.route.mode = "hash";
m.route( document.body, "/", {
"/" : furnish( home ),
"/select_company": furnish( selectCompany )
} );