Маршрутизатор Meteor — Iron: {{> выход}} не работает

#meteor #iron-router

#метеорит #железный маршрутизатор

Вопрос:

Моя проблема в том, что:

1- «{{> выход}}» не работает должным образом. Когда я удаляю «{{> yield}}» из шаблона, шаблон отображается правильно. Если я помещаю «{{> yield}}» в шаблон, отображается пустой тег тела.

2- Если я удалю «{{>adlayout}}» из тега body, то отобразится пустой тег body.

У меня есть следующий код шаблона :

     <head>
    <title>My Metronic</title>

    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
    <meta content="Good Description" name="description"/>
    <meta content="Dave Alex" name="author"/>
    <!-- BEGIN GLOBAL MANDATORY STYLES -->
    <link href="http://fonts.googleapis.com/css?family=Open Sans:400,300,600,700amp;subset=all" rel="stylesheet" type="text/css"/>
    <link href="assets/global/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
    <link href="assets/global/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    <link href="assets/global/plugins/uniform/css/uniform.default.css" rel="stylesheet" type="text/css"/>
    <!-- END GLOBAL MANDATORY STYLES -->
    <!-- BEGIN THEME STYLES -->
    <link href="assets/global/css/components.css" rel="stylesheet" type="text/css"/>
    <link href="assets/global/css/plugins.css" rel="stylesheet" type="text/css"/>
    <link href="assets/admin/layout/css/layout.css" rel="stylesheet" type="text/css"/>
    <link id="style_color" href="assets/admin/layout/css/themes/default.css" rel="stylesheet" type="text/css"/>
    <link href="assets/admin/layout/css/custom.css" rel="stylesheet" type="text/css"/>
    <!-- END THEME STYLES -->

    <link rel="shortcut icon" href="favicon.ico"/>
</head>


<body>
    {{> adlayout }}
</body>


<template name="adlayout">

    {{> adheader}}
    <div class="clearfix"></div>
    <div class="page-container">
        {{> adsidebar}}


        <!-- BEGIN CONTENT -->
        <div class="page-content-wrapper">
            <div class="page-content">
                <!-- BEGIN SAMPLE PORTLET CONFIGURATION MODAL FORM-->
                <!-- END SAMPLE PORTLET CONFIGURATION MODAL FORM-->
                <!-- BEGIN STYLE CUSTOMIZER -->
                <!-- END STYLE CUSTOMIZER -->
                <!-- BEGIN PAGE HEADER-->
                <div class="row">
                    <div class="col-md-12">
                        <!-- BEGIN PAGE TITLE amp; BREADCRUMB-->
                        {{> adbreadcrumb}}
                        <!-- END PAGE TITLE amp; BREADCRUMB-->
                    </div>
                </div>
                <!-- END PAGE HEADER-->
                <!-- BEGIN PAGE CONTENT-->
                <div class="row">
                    <div class="col-md-12">
                        Page content goes here  -  22

                        {{>yield}}


                    </div>
                </div>
                <!-- END PAGE CONTENT-->
            </div>
        </div>
        <!-- END CONTENT -->






    </div>
    {{> adfooter}}


</template>
 

Ниже приведены настройки моего маршрутизатора :

     Router.configure({

    layoutTemplate : 'layout'
});


    Router.map(function(){

        this.route('myHello', {
            path: '/mine',
            controller : 'MyHelloController'
        });

    });
 

Ниже приведен «MyHelloController» :

     MyHelloController = RouteController.extend({

    layoutTemplate: 'adlayout',
    template: 'hello',

    waitOn: function () {
        //return Meteor.subscribe('waitingFor');
    },

    data: function () {
        /*
        data = {waitingFor: 'No wait For'};
        return data;
        */
    },

    onBeforeAction: function () {

    },

    onAfterAction: function () {

    },
    action: function () {
        this.render();
    }


});
 

Может кто-нибудь подсказать мне, что я делаю неправильно и как это можно исправить.

Ответ №1:

Вы можете получить более подробную информацию о том, что происходит, заглянув в консоль javascript Chrome. Вероятно, у вас есть исключение где-то в вашем коде. {{>yield}} не будет отображаться из-за проблемы с шаблонами, задействованными в маршруте, который вы пытаетесь отобразить.

Учитывая предоставленную вами информацию, трудно сказать, в чем именно заключается эта ошибка. Это может быть обычная ошибка Js.

Ошибки, скорее всего, связаны с помощниками вашего шаблона или отображаемой функцией (если они у вас есть).

Также может случиться так, что ваши вложенные шаблоны не отображаются должным образом или имеют ошибки в своих помощниках, таких как adfooter или adsidebar .