0

Session.get() と Session.set() を使用して、ユーザーがボタンをクリックしたかどうかを確認しようとしています。このコードは、セッションが設定されているかどうかを確認するために実装されています。

"click .alt": function(event,template){

        if (Session.get("selected") === false){
            var clicked = event.currentTarget;
            clicked.className += " chosen";
            var data = clicked.dataset; 
            console.log(data);
            Session.set("selected", true);
        if (data.corr == true){
            console.log("Hi");
        }
        else{
            console.log("Not Hi");
        }
    }
    else{
        console.log("session was set to true");
    }
}

consol.log(data) は常に出力されますが、data.corr=true の場合でも "Hi" が新しく出力されます。何らかの理由で、私には、これは機能しません。うまくいけば、誰かが私を助けることができます。

更新 これは機能しません:

    if (Session.get("selected") == false){
        Session.set("selected", true);
        var clicked = event.currentTarget;

        if (clicked.dataset.corr == true){
            //Recording the time and calculating some points                
            time = new Date;
            time = time.getTime();
            time = 3000-Math.floor((time -Session.get("startedTime"))/10 );
            gameCol.insert({team:Session.get("teamnr"), points: time});
            console.log("Correct answer");
        }
        else{
            //0 points for wrong answer
            gameCol.insert({team:Session.get("teamnr"), points: 0});
            console.log("Wrong answer");
        }
    }
    else{
        console.log("You have answered");
    }

これは機能します:

    if (Session.get("selected") == false){
        Session.set("selected", true);
        var clicked = event.currentTarget;

        if (clicked.dataset.corr == true){
            //Recording the time and calculating some points                
            time = new Date;
            time = time.getTime();
            time = 3000-Math.floor((time -Session.get("startedTime"))/10 );
            gameCol.insert({team:Session.get("teamnr"), points: time});
            console.log("Correct answer");
        }
        else{
            //0 points for wrong answer
            //gameCol.insert({team:Session.get("teamnr"), points: 0});
            console.log("Wrong answer");
        }
    }
    else{
        console.log("You have answered");
    }

唯一の違いは、データベースに間違った回答を挿入するための行がリムーバーであることです。//gameCol.insert({team:Session.get("teamnr"), points: 0}); の行を参照してください。

更新 1.1 if/else を 2 に変更すると、代わりに動作する

if (clicked.dataset.corr == true){
            //Recording the time and calculating some points                
            time = new Date;
            time = time.getTime();
            time = 3000-Math.floor((time -Session.get("startedTime"))/10 );
            gameCol.insert({team:Session.get("teamnr"), points: time});
            console.log("Correct answer");
        }
        if(clicked.dataset.corr == false){
            //0 points for wrong answer
            gameCol.insert({team:Session.get("teamnr"), points: 0});
            console.log("Wrong answer");
        }
4

3 に答える 3

0

それは機能します。私はあなたのコードをバニラ流星プロジェクトに追加しました(何のためにあるのかわからないものをいくつか削除しました)。

を使用してプロジェクトを作成しましたmrt create。このコードは、hello テンプレートをクリックするたびにセッションを true から false に設定します。

if (Meteor.isClient) {

  Meteor.startup(function() {
    Session.set("selected", false);
  });

  Template.hello.greeting = function () {
    return "Welcome to so-q.";
  };

  Template.hello.events({
    "click": function(event,template){

      if (Session.get("selected") === false){
        console.log("session was set to false");
        Session.set("selected", true);
      }
      else{
        console.log("session was set to true");
        Session.set("selected", false);
      }
    }
  });

}

if (Meteor.isServer) {
  Meteor.startup(function () {
// code to run on server at startup
});
}
于 2013-04-17T14:58:48.977 に答える