Meteor Tabular не реагирует на изменение значений ReactiveDict
Я использую отличный пакет Tabular. https://github.com/Meteor-Community-Packages/meteor-tabular.
Я использую клиентскую часть
selector
helper для реактивного изменения моей таблицы, заставив сервер изменить запрос для моего набора данных.
У меня есть несколько HTML
input
s, которые действуют как фильтры, и я заполняю ReactiveDict
values
. Событие нажатия кнопки поиска запускает
ReactiveDict
чтобы заполнить объект с помощью
.set
Инициализация ReactiveDict
Template.tbl.onCreated(function () {
const self = this;
self.filters = new ReactiveDict({});
});
Население ReactiveDict
'click #search-button'(e, template) {
//clear to 'reset' fields in ReactiveDict that could've been cleared by User
template.filters.clear();
const searchableFields = getSearchableFields();
//Initialize standard JS Obj that ReactiveDict will then be set to
const filterObj = {};
//Loop through search fields on DOM and populate into Obj if they have a val
for (let field of searchableFields) {
const value = $(`#${field}-filter`).val();
if (value) {
filterObj[field] = new RegExp(escapeStringRegex(value.trim()), 'i');
}
}
if (Object.keys(filterObj).length) {
template.filters.set(filterObj);
}
},
Помощник селектора
selector: () => {
const filters = Template.instance().filters.all();
const selector = { SOME_DEFAULT_OBJ, ...filters };
return selector;
},
Я заметил, что сервер не замечает никаких изменений по сравнению с ReactiveDict, если все ключи остаются прежними. Я тестирую это, войдя на сервер
changeSelector
md и убедиться, что моя регистрация не происходит, если изменилось только значение в селекторе.
Есть ли этому решение?
Т.е.
{foo:'foo'} to {foo:'bar'}
должен реактивно запускать сервер для повторного запроса, но это не так. Но
{foo:'foo'} to {bar:'bar'}
сработает.
Это проблема с тем, как я использую ReactiveDict, или это на табличной стороне?
Спасибо