0

Meteor をいじっていて、奇妙な動作に遭遇しました。テンプレートがレンダリングされますが、レンダリング後すぐに再びクリアされます。

私のテンプレートファイル; /client/game.html

<head>
  <title>test</title>
</head>

<body>
    <h1>test h1</h1>
    {{> board}}
</body>

<template name="board">
  <table class="gameboard">
    {{#each model}}
      {{>row}}
    {{/each}}
  </table>
</template>

<template name="row">
  <tr>
    {{#each this}}
      {{>cell this}}
    {{/each}}
  </tr>
</template>

<template name="cell">
  <td>
    {{answer this}}
  </td>
</template>

クライアント ファイル。/client/client.js

Meteor.startup(function () {
    Meteor.call('generateBoard');
});

Template.cell.answer = function (cell) {
    console.log(cell.question.answer);
    return cell.question.answer;
}

Template.board.model = function () {
    //var game = Games.findOne(Session.get("selected"));
    var game = Games.findOne(Session.get("selected"));
    if(game) {
        console.log(game);
        return game.board;
    }
}

そして私のモデルファイル /model.js

Games = new Meteor.Collection("games");
Meteor.methods({    
    generateBoard: function(){

        var boardSize = 64;


        var rowSize = cellSize = Math.sqrt(boardSize);
        var board = [];
        var row = [];

        for(var rows = 0; rows < rowSize; rows++) {
            for (var cells = 0; cells < cellSize; cells++) {
                var cell = {
                    question: Meteor.call("generateAnswer"),
                    state: 0,
                    player: null
                }
                row.push(cell);
            }
            board.push(row);
            row = [];
        }
        var gameId = Games.insert({
            board: board
        });
        Session.set("selected", gameId);
    },

    generateAnswer: function(){
        var lowerNumber = 2;
        var higherNumber = 8;

        var firstNumber = Math.round( Math.random() * (higherNumber - lowerNumber) ) + lowerNumber;
        var secondNumber = Math.round(Math.random() * (higherNumber - lowerNumber) ) + lowerNumber;
        return {
            firstNumber: firstNumber,
            secondNumber: secondNumber,
            answer: firstNumber * secondNumber
        };
    }
});

なぜこのような動作をするのですか? 私は変なことをしましたか?

4

1 に答える 1

0

Meteor.isClient-check の外で Session.set を使用しないでください。

于 2015-04-20T15:10:54.617 に答える