Хобрук: Ваш путь к мастерству в программировании

Доступ к экземплярам других шаблонов

Вы можете получить доступ к экземпляру текущего шаблона, выполнив Template.instance(). Но вы часто сталкиваетесь с ситуациями, когда вам также необходимо получить доступ к экземплярам других шаблонов. Например, если вы используете ReactiveVar, вам нужно получить или установить переменные, прикрепленные к другим экземплярам шаблона.

Я наткнулся на Как получить экземпляр родительского шаблона (текущего шаблона), но это еще не все.

Q1. Как мы можем получить доступ к любому экземпляру шаблона, а не только к текущему шаблону

Вопрос 2. Противоречит ли это методу Meteor, если мне нужно получить доступ к экземплярам других шаблонов?

16.07.2015

  • На момент написания этой статьи у blaze не было встроенной библиотеки компонентов, поэтому вам приходилось делать такие вещи, как Blaze.getData. Если у вас есть конкретный пример, я могу привести более конкретный пример с кодом. 17.07.2015

Ответы:


1

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

Template.example.myVariable = new ReactiveVar();

вместо

Template.example.onCreated(function (){
  this.myVariable = new ReactiveVar();
});
08.06.2016

2

Если ваши целевые шаблоны находятся в одном файле, вы можете просто определить реактивную переменную вне функций шаблона в начале файла. Все шаблоны в файле будут иметь к нему доступ.

Если ваш целевой шаблон является родительским шаблоном (или любым другим родительским шаблоном), вы можете получить доступ к его контексту данных, используя Template.parentData() аргумент, являющийся рангом родительского элемента (по умолчанию 1). Кажется, вы это уже знаете.

Если вам нужно получить доступ к элементу DOM в другом шаблоне на той же странице, вы можете использовать селекторы jQuery.

Я не знаю другого способа добраться до другого экземпляра шаблона (на самом деле, функции Blaze.getTemplate(name) нет.) Ответ, на который вы ссылаетесь, кажется, лучше, чем вы можете получить.

16.07.2015

3

Я думаю, что это чисто субъективно, так как в Meteor есть так много разных способов сделать что-то, но я действительно думаю, что Session идеально подходит для совместного использования переменных в нескольких шаблонах. Люди утверждают, что Session это плохо, поскольку оно глобально и может загрязнять пространство имен. Я бы сказал, что разработчик должен поддерживать чистоту своей среды любым удобным для него способом. Так, например, это плохо:

Session.set('count', 23);
Session.set('last', new Date());

Но это лучше:

Session.set('notifications/count', 23);
Session.set('notificatinos/last', new Date());
16.07.2015

4

Самое близкое, что я получил, это нацелить шаблон на один из его элементов (предположим, что шаблон содержит форму)

Blaze.getView($('form')[0]).templateInstance().someReactiveVar.set('changed')
16.11.2018
Новые материалы

Блоги, которые обязательно нужно прочитать специалистам по обработке и анализу данных :
Добро пожаловать в 2020! Новый год и новое десятилетие. Поскольку мы начинаем новый и захватывающий год в науке о данных, важно, чтобы профессионалы открыли для себя лучшие блоги по науке о..

Универсальный базовый доход
Универсальный базовый доход В последние годы концепция всеобщего базового дохода (УБД) набирает обороты как все более эффективное решение для борьбы с растущим неравенством доходов и..

Освоение Python для анализа финансовых данных: руководство по получению данных о доходах от акций
Если вы хотите научиться получать данные о доходах от акций с помощью Python, то это руководство для вас! В этой статье мы рассмотрим несколько примеров сбора данных о доходах от акций. Мы..

Абсолютно имеет смысл.
Абсолютно имеет смысл. Мой репетитор даже предложил то же самое. Одна проблема, с которой я столкнулся, заключается в том, что для каждой из категорий не было ярлыка «хорошо». Если я перебираю..

МАШИННОЕ ОБУЧЕНИЕ И EDA
Каковы шаги в машинном обучении Определение проблемы Генерация гипотез Извлечение данных Исследование данных Прогнозное моделирование Развертывание модели Зачем нам ЭДА? Идентификация..

В чем основные различия между ReactJS и React-Native?
В чем основные различия между ReactJS и React-Native? Что я узнал, создавая веб-приложения, а затем мобильные приложения на React React-Native существует уже около 2 лет и стал..

LeetCode — Умножение строк
Постановка задачи Даны два неотрицательных целых числа num1 и num2 , представленные в виде строк, вернуть произведение num1 и num2 , а также представлен в виде строки. Примечание . Вы..