В моем клиентском коде у меня есть сеанс, который устанавливается на объект в глобальной функции:Почему мой помощник шаблонов, который использует session.get, не реагирует?
somefunctions.js
updateTimelineItem = function(newSelection){
var selectedItem = $.grep(Session.get('liveProjectData').items,function(e){return e.position ==newSelection.parent().index()});
Session.set('selectedItem',selectedItem[0]);
};
Однако, в файле шаблона, где мне нужно, чтобы отобразить участки данные объекта этой сессии, мой помощник не запускается после установки сеанса.
mytemplate.js
Template.mytemplate.helpers({
selectedItem: function(){
console.log('reactive update. new item selected.');
return Session.get('selectedItem');
}
})
Пример того, что сеанс хранит
Object { position: 0, type: "image", source: "imgur", source-url: "https://dl.dropboxusercontent.com/u…", provider: "magic", animation: "puff", thumb: "https://dl.dropboxusercontent.com/u…", fullsize: "https://dl.dropboxusercontent.com/u…", duration: 1000 }
Я пытался найти документацию относительно того, когда сеанс не будет реактивным без особой удачи. Я знаю, что сеанс установлен, потому что я могу написать Session.get ('selectedItem') в консоли браузера, и я получаю ожидаемый результат.
Благодарим за помощь.
'Session' будет сериализовать свои входы, что часто приводит к необычному поведению при хранении сложных данных. Можете ли вы привести пример того, как будет выглядеть 'selectedItem [0]'? –
Спасибо, Дэвид, я привел пример данных, которые храню в сессии в своем вопросе. – danSiebes
вы можете захотеть 'JSON.stringify' /' JSON.parse' ваш объект до/после установки/получения переменной сеанса по предложению Дэвида –