Мой вопрос затрагивает общий сценарий с веб-приложениями: у вас есть какие-то элементы db, которые сопоставляются с некоторыми наборами элементов DOM. Например. объект JSON, который сопоставляется с form
с некоторыми полями.Как распространять идентификатор db через шаблон Meteor.js?
Теперь представьте, что в разных местах/на разных мероприятиях внутри вашей формы вам нужен этот db id. На определенных уровнях (в определенных контекстах данных) идентификатор будет доступен как this._id
в Метеорных событиях, но не во всех, так как операторы sub-#with
могут перезаписать контекст данных.
То, что я делаю в настоящее время в этих случаях, задается в шаблоне, содержащем форму <form id="{{_id}}" ...>
, а затем в случаях, когда this._id
недоступен Я получаю это через $(this).closest('form').id
. Это работает.
Но мой вопрос: есть ли лучший способ? как бы вы это сделали с Метеор?
Спасибо! К 1: мне не нравится жесткое кодирование структуры DOM в JS. Это как '$ (...).parent() ... .parent() '. В 2: это более похоже на 'Blaze.getData ($ (...). Closeest ('form')) ._ id'. Это хорошо. Но я бы поменял ваш пример на мой фрагмент здесь, поскольку более простой и универсальный. До 3: Да, если вы дадите своим пунктам маршрут, хорошо! Я не. К 4: я действительно не понимаю, как глобальный obj поможет мне найти, например. к которому принадлежит кнопка db obj. Вы имеете в виду, строя реактивный dict с ... что? Вы можете объяснить? –
Для 2 вы можете избежать '.closest', так как вы, вероятно, узнаете элемент формы, и вы можете обратиться к нему напрямую. Для 4 примером будет 'M.collection =" Клиенты ". Тогда ваше событие будет' window [M.collection] .insert() '. Конечно, вы должны использовать пространство имен для своих коллекций и использовать метод сервера, но это суть. 2 еще что я только подумал о том, чтобы покончить с '# with' и передать все в шаблон. Другой вариант - передать все элементы '# with' в объект, например' {{> subTemplate items = this name = 'foobar'}} ' –
Также: на уровне родительского контекста вы хотите получить доступ к' {{#each myArr}} {{> subTemplate parent = ..}} {{/ each}} ', а затем на под-подуровнях' {{#each myArr}} {{> subSubTemplate parent = parent}} { {/}} каждая '. –