我最近在看 Emberjs,发现这篇有用的文章是由它的主要贡献者之一写的:关于 Ember.js 使用的建议和说明
它引导我完成了一个示例,该示例从服务器获取用户数据列表并将它们呈现在屏幕上。我将简要解释它是如何工作的:
- 该应用程序通过 ajax 调用联系服务器以获取用户数据列表。
- 在 ajax 调用结束时,立即返回一个空的可枚举,稍后将其用作控制器的属性。
- 一旦 ajax 调用完成,它会用数据填充枚举,这些数据依次更新控制器的属性,最后触发自动重新渲染。
只要不重新访问该列表,它就可以正常工作。当用户重新访问列表时,假设他/她导航到另一个状态然后返回,逻辑将再次触发,从服务器获取数据并填充列表。不过,这一次的名单可不是空的!因此,我们有一个重复数据列表。我想通过在ajax调用成功时清除列表的内容来解决这个问题。下面是ajax调用的代码:
allAwesomebergs: [],
fetch: function(){
$.ajax({
url: 'https://api.github.com/repos/emberjs/ember.js/contributors',
dataType: 'jsonp',
context: this,
success: function(response) {
response.data.forEach(function(awesomeberg){
this.allAwesomebergs.addObject(App.Awesomeberg.create(awesomeberg))
}, this);
}
});
return this.allAwesomebergs;
},
上面的代码没有清除列表的内容。我尝试在成功函数的开头添加一行“allAwesomebergs = []”,但我得到的只是一个空白屏幕。我认为我可能没有正确执行此操作,但我查看了 Ember 中的文档,并没有看到任何关于清除 Enumerable 内容的内容。
因此问题是:解决这个重复加载问题的最简单方法是什么?事先清除内容似乎是最明显的,但我无法让它发挥作用。