[英]Session.get does not set variable in Meteor.js
fruit
是模板幫助器Template.fruits.name
和Template.fruits.nick
之間共享的變量,以防止在每個單獨的幫助器函數中重復代碼。
但是,當change #fruit-selector
事件處理程序觸發時,即使共享變量fruit
由Session.get('fruit')
設置,也不會更改。
如果我希望它是反應性的,這是否意味着我不能使用這種聲明fruit
變量的方法?
main.js
(function() {
// Set default fruit
if(!Session.get('fruit')) {
Session.set('fruit', 'apple');
}
var fruit = Session.get('fruit');
Template.fruits.name = function() {
return fruit;
};
Template.fruits.nickname = function() {
return fruit + 'y';
};
Template.fruits.name2 = function() {
return Session.get('fruit');
};
Template.fruits.events({
'change #fruit-selector': function(e) {
Session.set('fruit', e.target.value);
console.log('fruit: ' + fruit)
}
});
}());
您必須在模板助手中使用Session.get('fruit')
,否則它們將不會響應更改( fruit
不是反應性數據源,它已從反應性數據源獲得了價值)。
PS使用Session.setDefault('fruit', 'apple')
代替您的方法。
試試這個(您是說Template.fruit.nickname還是Template.fruits.nickname?):
(function() {
// Set default fruit
if(!Session.get('fruit')) {
Session.set('fruit', 'apple');
}
Template.fruits.name = function() {
return Session.get('fruit');
};
Template.fruit.nickname = function() {
return Session.get('fruit') + 'y';
};
Template.fruits.name2 = function() {
return Session.get('fruit');
};
Template.fruits.events({
'change #fruit-selector': function(e) {
Session.set('fruit', e.target.value);
console.log('fruit: ' + Session.get('fruit'))
}
});
}());
看起來,會話不再是默認流星程序包的一部分。 轉到命令提示符並運行“流星添加會話”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.