Примечание: Ответ ниже поможет вам кнопку рабочего переключателя, и один общий статус переключения. Если вам нужна кнопка, чтобы делать разные вещи или менять разные логические кнопки, в зависимости от контекста, тогда есть больше работы. Возможно, это возможно.
Вложенность, используемая на дисплее, не влияет на внутреннее представление шаблонов. Все шаблоны в Meteor get определены в объекте Template как Template.someTemplateName
. Каждый шаблон представляет собой объект JS, содержащий поля данных, функции и обработчики событий.
По этой причине dashes in template names are forbidden.
Поскольку метеорит использует имя шаблона в объекте Javascript как имя свойства, поэтому имена шаблонов должны соответствовать соглашениям/ограничениям именования Javascript. В частности, тир выглядит как минус в результирующем коде:
Template.fancy-button.events
и не будет работать. Javascript читает, что как Template.fancy
минус button.events
, а не как обработчик событий для шаблона модной кнопки.
Что касается Java-совместимых имен, http://javascript.crockford.com/code.html предлагает:
Имена должны быть сформированы из 26 верхних и нижнего регистра букв (A .. Z, A .. Z) 10 цифр (0 .. 9) и _ (underbar) ...
Другое соглашение Javascript - это camelCase, где каждому слову в имени после первого слова присваивается заглавная буква. Я полагаю, это вместо тире, чтобы изменить код следующим образом:
<template name="fancyButton">
<p>This is a fancy button that I use in several places!</p>
<input type="button" class="veryFancy" value="Click Me!" />
</template>
<template name="homePage">
{{> fancyButton}}
// here, I want the button to bring up my "stats" page (go, iron-router, go)
{{ #if veryFancyStatus }}
{{ > statsPage }}
{{ /if }}
</template>
<template name="statsPage">
{{> fancyButton}}
// here, I want the button to show an alert page
{{ #if veryFancyStatus }}
{{ > alertPage }}
{{ /if }}
</template>
Метеор способ установить обработчик щелчка, чтобы использовать event maps
Кроме того, вы, вероятно, хотите быть использовать helper to make it easier to use session variables in a template
Вот как реализовать переключатель:
client.js (непроверенные)
// initialize veryFancyStatus to 0
Session.set("veryFancyStatus",0)
// register veryFancyStatus so we can read it in every template
Handlebars.registerHelper('veryFancyStatus',function(input){
return Session.get("veryFancyStatus");
});
// set up an event handler so that any time a .veryFancy class element is clicked
// a function is called to toggle the session variable veryFancyStatus
// this should also trigger redraws in templates that are conditional on veryFancyStatus
Template.fancyButton.events({
'click .veryFancy': function() {
Session.set("veryFancyStatus", +(!(Session.get("veryFancyStatus")));
}
});
Я думаю, что код должен обработчик щелчка в клиентском JavaScript, то обработчик щелчка обновляет некоторые реактивные переменный, и что вызовет перерисовку фрагмента шаблона. – Paul
есть ли у вас javascript-код? – juanpastas