На клиенте у меня есть это:Meteor: Deps.autorun не срабатывает при обновлении коллекции
var Coll1 = new Meteor.Collection('myCollection1');
var Coll2 = new Meteor.Collection('myCollection2');
var handle1 = null;
Deps.autorun(function() {
var temp = Session.get('id');
if (id) handle1 = Meteor.subscribe('myCollection1', id);
};
var handle2 = null;
Deps.autorun(function() {
var temp = Session.get('id');
if (id) handle2 = Meteor.subscribe('myCollection2', id);
};
И в другом месте в коде шаблона, я делаю это (когда пользователь нажимает на элемент DOM):
Coll1.insert({name: 'new element1');
Coll2.insert({name: 'new element2');
Приведенный выше код не вызывает обновление Coll1 и Coll2 в клиенте (но хорошо на сервере). Если я обновляю свой браузер, выполняется обновление, то есть клиент синхронизируется с сервером и отображает новые элементы.
Что мне не хватает?
ОК, я думал, что 'Meteor.subscribe()' или 'handles' сами являются реактивными источниками и будут запускать обновление при изменении коллекции (через' insert'), но это не так. Как я могу запустить повторный запуск функций 'Deps.autorun()' после вставки? –
для вашего кода вам просто нужно установить сеанс var - например, 'Session.set ('id', somethingNew)' - внимательно посмотрите на http://docs.meteor.com/#reactivity - его довольно хорошо выложено там о том, что вызовет повторный запуск реактивного вычисления (deps.autorun) –