は、以下の更新:
を私はこれを行うにはかなり効果的かつ効率的な方法だと思うものをしてきました。
フロールータの機能の見直しでは、私は関係なく、かどうかの、FlowRouter.current().route.group.options
にこのオブジェクトはグループで定義された任意のキーと値のペアが含まれている、ルータのオブジェクトは、すべてのグループパラメータを含むフィールドを含んでいることに気づきましたそれらはFlow-Router APIによって使用されるかどうかにかかわらず使用されます。
私はこれを、グループのいくつかのテンプレートのデフォルトをルータに渡す簡単な方法としてこれを使うことにしました。
まずグループの定義である:
var mainRoutes = FlowRouter.group({
name: "mainRoutes",
defaultTemplates: {
menu: "mainMenu",
breadcrumb: "mainCrumb",
sidebarLeft: "sidebarLeft",
sidebarRight: "sidebarRight",
footer: "mainFooter"
}
});
次にルートを定義する際に、我々はそれがフロールータの既存の機能を使用していますので、私はこのパターンが好きthis.group.options.defaultTemplates
mainAppRoutes.route('/', {
name: "home",
action: function() {
// Get the defaultTemplates object
var templates = this.group.options.defaultTemplates;
// Add route specific templates
templates.content = "homeScreen";
// Pass all the templates to the renderer
BlazeLayout.render("appLayoutMain", templates);
}
});
からこれらにアクセスすることができ、かつルート内にコードが1行追加され、グループ全体のデフォルトテンプレートの定義が可能になります。これは基本的にIron-RouterがテンプレートデフォルトをRouter.config()
で使用しているのを模倣しており、ローカルルートテンプレート定義の利点はデフォルトテンプレートオブジェクト全体を上書きしないという利点があります。
- UPDATE 私はそれが一貫して動作させるために解決しなければならなかったhaving another problemを終わるなかったが上記の、私のためによく働いています。フロールータは、非反応性であるため、我々は、ローカル
route.action
機能では、やっているとして、あなたが任意の基礎となる「ルートのデフォルトを」変更した場合
基本的には、ルータグループオブジェクトがあればルートへのルートから持続すると思われますルートが同じグループにあるためです。また、この「オプション」オブジェクトはルート定義からルータに渡されます。つまり、上のケースでデフォルトのパラメータを上書きすると、それを上書きするルートが呼び出された後、その同じグループを使用するすべての後続のルートで上書きされます。
私が思いついた解決策は、グループ定義でtriggersExit: [ resetDefaults ]
のようにデフォルトリセット機能を実行することでした。
次に、デフォルトをリセットするだけです。
function resetDefaults (context) {
context.route.group.options.defaultLayoutTemplate = "mainAppLayout";
context.route.group.options.defaultTemplates = {
defaultTeamplates: "navMain",
// ...
};
簡単に言えば、ネストされたテンプレートの親にアクセスするには、 'FlowRouter.current()。group.parent.options.defaultTemplates'を介してネストされたグループの親にアクセスできます – robertdavid