我正在用backbone.js 构建一个移动应用程序。它允许用户选择球队中的足球运动员。如果用户中途停止,我希望应用程序记住选择了哪些玩家。我用本地存储来做这个。假设用户在提前退出后返回“选择玩家”页面,已经选择了 2 个玩家。我为此页面生成了一个 html 字符串:
html_string = 模板();
这是一系列 div 和嵌套 div。然后我从本地存储中获取 saved_selection:
saved_selection = JSON.parse(window.localStorage.getItem('match_selection'));
console.log(saved_selected);
输出是:
Object {236: "Forward_2", 243: "Forward_1"}
键是玩家 ID,值是他们的位置。接下来,我遍历每个对象键值对并替换匹配的 div(在本示例中我不提供)。所以完整的渲染函数是:
render: function (forArr) {
saved_selection = JSON.parse(window.localStorage.getItem('match_selection'));
html_string = template({forArr:forArr, saved_selection:saved_selection});
console.log(saved_selection);
if(UsefulFuncs.getObjSize(saved_selection)>0){
for(var index in saved_selection) {
var player = new models.Player({id: index});
player.fetch({success:function(model) {
console.log('in success');
//do some matching and div replacement
html_string = "The new html string";
}});
}
}
this.$el.html(html_string);
return this;
},
我可以在输出中看到它两次成功,但返回的 html 仍然是原始模板,而不是“新的 html 字符串”......我认为这可能与异步调用有关...... .