2014-08-31 4 views
2

Мои публикации:Как отказаться от подписки?

Meteor.publish('items', function() { 
    return Items.find({}, {skip: randomNumber, limit: 100}); 
}); 

Моя подписка код происходит при нажатии кнопки (в templates.event)

Meteor.subscribe('items'); 
Items.find().fetch(); 

Однако, проблема заключается в том, что элементы не обновляется с новыми данными, но вместо этого новые данные добавляются к старому списку. Что я могу сделать, чтобы отменить подписку на старые данные?

+1

У вас есть пример, который работает: http://meteorpad.com/pad/fwka2h9mAi2vLFysv. Просто отмените подписку перед подпиской. –

ответ

4

When you call Meteor.subscribe it will return a subscription handle.

stop Вы звоните на ручку, чтобы отменить его.

например, в вашем помощнике событий

if (SomeGlobalVar){ 
    SomeGlobalVar.stop(); 
} 
SomeGlobalVar = Meteor.subscribe('items'); 

The other way is to run the subscription inside Deps.autorun; он будет автоматически убирать старые подписки.

например, в вас обработчик события

Session.set('subscribe', true); 

В другом месте в коде:

Deps.autorun(function(){ 
    if (Session.get('subscribe')){ 
    Meteor.subscribe('items'); 
    } 
}); 

Если вы звоните Session.set('subsribe', false); Метеор автоматически отключит/очистки, что подписка на items.

1

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

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

+0

Не плохой совет, однако, когда есть тысячи предметов, это не отличное решение по очевидным причинам. –

+0

запрос, поставленный в вопросе, ограничен результатами 1K, поэтому я предположил, что мы будем иметь дело только с 1K элементами за раз. –

Смежные вопросы