2017-02-24 8 views
0

流星で鉄のルーターを使い始めたばかりです。テンプレートを隠したり削除したり、別のテンプレートに置き換えるにはどうしたらいいですか?iron-routerの流星のテンプレートを破壊/除去する

私は2つのクライアント側ルートを持っています。

Router.route('/', function() { 
    this.layout('bodyLayout'); 
    this.render('roomList', { 
    to: 'roomList' 
    }); 
}); 

他のチャットルームのためにある:

Router.route('/room/:_id', function() { 
    this.layout('bodyLayout'); 
    var roomId = this.params._id; 
    this.render('room', { 
    to: 'room', 
    data:() => { 
     return { roomId } 
    } 
    }); 
}); 

は、これらのいずれもが、彼らが近くに一緒にyield編です同じレイアウトを持っている一つは、ユーザーが参加できるチャットルームのリストを示してい

<template name="bodyLayout"> 
    <!-- layout stuff --> 

    {{> yield 'roomList'}} 
    {{> yield 'room'}} 

    <!-- layout stuff --> 
</template> 

/にアクセスして部屋をクリックすると、その部屋がその下にレンダリングされます。しかし、私が本当に望むのは、roomまたはroomListのいずれかを示すことです。 roomを作成するときにroomListを削除するにはどうすればいいですか、それとも何とかroomに置き換えることはできますか?

答えて

0

最終的に私はいくつかの解決策を見つけました。テンプレート

特定の場所にはいくつかのテンプレートの一つだけを必要とする場合、これは、私のような場合に有用であるの交換

。いくつかのルートが同じyieldにレンダリングできることが判明しました。我々はyield秒の1削除することができます。

<template name="bodyLayout"> 
    <!-- layout stuff --> 

    {{> yield }} 

    <!-- layout stuff --> 
</template> 

を我々はthis.renderに渡すオブジェクトからto属性を削除:

<template name="bodyLayout"> 
    <!-- layout stuff --> 

    {{> yield 'content' }} 

    <!-- layout stuff --> 
</template> 

Router.route('/', function() { 
    this.layout('bodyLayout'); 
    this.render('roomList'); 
}); 

Router.route('/room/:_id', function() { 
    this.layout('bodyLayout'); 
    var roomId = this.params._id; 
    this.render('room', { 
    // We don't need this anymore: 
    // to: 'room', 
    data:() => { 
     return { roomId } 
    } 
    }); 
}); 

また、yieldに名前を付けます

両方のルータに同じを指す 'to'属性を与えますyield

01あなたは、ルータからテンプレートを削除する必要がある場合、あなたは、このようにそれを言って、this.render機能に代わり、テンプレート名の空の文字列を与えることで、これを行うことができ、ルータ

からテンプレートを削除する

Router.route('/', function() { 
    this.layout('bodyLayout'); 
    this.render('roomList', { to: 'content'}); 
}); 

Router.route('/room/:_id', function() { 
    this.layout('bodyLayout'); 
    var roomId = this.params._id; 
    this.render('room', { 
    to: 'content', 
    data:() => { 
     return { roomId } 
    } 
    }); 
}); 

テンプレートをこれにレンダリングしないでください。

Router.route('/', function() { 
    this.layout('bodyLayout'); 
    this.render('roomList', { 
    to: 'roomList' 
    }); 

    // Remove the room that was shown 
    this.render('', { to: 'room'}); 
}); 

関連する問題