我正在使用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);
}
});
}
谢谢你。