簡體   English   中英

Session.get在Meteor.js中未設置變量

[英]Session.get does not set variable in Meteor.js

fruit是模板幫助器Template.fruits.nameTemplate.fruits.nick之間共享的變量,以防止在每個單獨的幫助器函數中重復代碼。

但是,當change #fruit-selector事件處理程序觸發時,即使共享變量fruitSession.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM