2014-09-11 2 views
1

У меня есть три файла css, которые я хочу загрузить только на определенную страницу или шаблон. Как это можно сделать в Метеор. Я уже пытался добавить файлы css в область заголовка при создании шаблона, но это не работает, потому что эти файлы остаются загруженными, когда я перемещаюсь от этой страницы.Как загрузить файл css в Meteor только на одну страницу?

+0

Может быть дубликат: http://stackoverflow.com/questions/25456293/meteor-js-iron-router-apply-css-change-whenever-route-changes/ – saimeunt

ответ

2

Я решил это с помощью очень простого пользовательского макета, который добавляет имя шаблона в первый div. На главной шаблона:

<head> 
    <title>Your title</title> 
    ... 
</head> 

<template name="layout"> 
    <div class="container-fluid {{template}}"> 
    <header> 
     <h1>Testing</h1> 
     ... 
    </header> 
    <div class="row"> 
     ... 
    </div> 
    </div> 
</template> 

Добавьте следующий шаблон помощника:

Template.layout.helpers({ 
    template: function() { 
    route = Router.current(); 
    return route? route.lookupTemplate() : 'home'; 
    }, 
    ... 
}); 

Ваш CSS теперь может быть выделен на одной странице, просто добавив имя вашего шаблона в качестве корневого класса, например, так:

.templateName header h1 { color: red; } 
.templateName div.row { max-height: 300px; } 
... 

Наконец, не забудьте указать железный маршрутизатор в шаблон макета:

Router.configure({ 
    layoutTemplate: 'layout', 
    ... 
}); 
+0

Как вы вернули имя шаблона используя {{template}} помощник? Какая команда? Спасибо – JoshJoe

+0

Это сработало, но вместо этого я просто обернул вставку шаблона в div, подобный этому

{{> Receipt}}
. Затем мне пришлось использовать .less файлы и обернуть их, как вы предложили. Не знаю, почему, но Meteor не позволил мне обернуть мои CSS-файлы другим классом CSS. – JoshJoe

+0

@JoshOne Я просто добавил отсутствующий помощник шаблона и изменил пример, чтобы показать CSS вместо LESS. Извини за это. – bkuri

Смежные вопросы