0

我正在使用http://www.aropupu.fi/bracket/为锦标赛网站创建括号,我将 json 存储在我的数据库中,每当它被修改时,我都会更新数据库中的 json。我有另一个页面从数据库轮询 json。这很好用,唯一的问题是,目前当我从数据库中检索 json 时,我必须重新创建整个括号,因此它被销毁并创建,所以用户被送回开始(如果他正在滚动它) . 有没有更好的方法来用 json 更新括号而不破坏和重新创建它?

我尝试通过在括号内找到标签并替换文本来直接设置值(如下所示)。这样做的问题是支架没有收到更改通知,也没有让玩家前进。

// jQuery
function createBracket(id, json, started) {
  /*

  IF STARTED: don't replace whole bracket,
  replace values (solves issue with backscrolling)
  */

  section = $('.bracket-row[tourn-id="' + id + '"]');
  brack = section.find('.scrollable').eq(0);

  if (started && brack.find('.bracket').length != 0) {
    // started and bracket already built, dont replace whole json
    index = 1;
    $.each(json.results, function(i, results) {
      $.each(results, function(i2, result_column) {
        $.each(result_column, function(i3, team) {
          $.each(team, function(i4, player) {
            if (player != null) {
              tag = '[data-resultid="result-' + (index++) + '"]';
              $(tag).text(player);
            }
          });
        })
      })
    })
  } else {
    // whole bracket gets recreated here
    brack.bracket({
      init: json,
      decorator: {
        edit: acEditFn,
        render: acRenderFn
      }
    });
  }
}

function getBrackets() {
  $.ajax({
    url: "",
    type: "POST",
    data: {
      ids: ids
    },
    dataType: 'json',
    success: function(data) {

      $.each(data.brackets, function(id, json) {
        createBracket(id, $.parseJSON(json), data.started[id]);
      })

      setTimeout(getBrackets, 1001);
    }
  });
}

谢谢你。

4

0 回答 0