[Примечание: этот ответ на Метеоре 0.6.6.2 по крайней мере 1.1.0.2]
[редактировать: обновлен также объяснить, как сделать это в то время, не нарушая реактивность. Благодаря @DeanRadcliffe, @AdnanY, @TomWijsman и @MikeGraf]
Данные хранятся внутри Session.keys
, который является просто объектом, так что вы можете вручную удалить ключи:
Session.set('foo', 'bar')
delete Session.keys['foo']
console.log(Session.get('foo')) // will be `undefined`
Чтобы удалить все ключи, вы можете просто присвоить пустой объект Session.keys
:
Session.set('foo', 'bar')
Session.set('baz', 'ooka!')
Session.keys = {}
console.log(Session.get('foo')) // will be `undefined`
console.log(Session.get('baz')) // will be `undefined`
Это самый простой способ. Если вы хотите убедиться, что любые реактивные зависимости обработаны правильно, убедитесь, что вы также делаете что-то вроде того, что предлагает @ dean-radcliffe в первом комментарии. Используйте Session.set()
, чтобы сначала установить ключи в undefined, а затем вручную удалить их. Как это:
// Reset one value
Session.set('foo', undefined)
delete Session.keys.foo
// Clear all keys
Object.keys(Session.keys).forEach(function(key){ Session.set(key, undefined); })
Session.keys = {}
Там еще будут какие-то остатки вещи в Session.keyDeps.foo
и Session.keyValueDeps.foo
, но это не должно мешать.
Не рекомендуется проходить под обложками 'Session' и напрямую манипулировать ключами. Однако вы можете использовать его для каждого имени ключа: 'Object.keys (Session.keys) .forEach (function (key) {Session.set (key, undefined);})' –
Очень хорошая точка @DeanRadcliffe, обновил ответ. – jpadvo
@DeanRadcliffe, большое спасибо за ваш вклад. Я действительно следовал [этому anwser] (http://stackoverflow.com/a/28803605/877353) (который я редактировал сейчас), и не мог найти, почему реактивность исчезла. Без вашего вклада я бы бродил целую вечность. Ты жжешь. Большое спасибо! –