Ember.js 浏览器中同一对象的多个副本,带有Ember和远程数据存储
我有以下代码:Ember.js 浏览器中同一对象的多个副本,带有Ember和远程数据存储,ember.js,Ember.js,我有以下代码: App.ListsRoute = Ember.Route.extend({ model: function() { // This get's all the lists from the server return App.List.findAll() } }); App.ListRoute = Ember.Route.extend({ model: function(params) { // This gets a single list
App.ListsRoute = Ember.Route.extend({
model: function() {
// This get's all the lists from the server
return App.List.findAll()
}
});
App.ListRoute = Ember.Route.extend({
model: function(params) {
// This gets a single list from the server
// Now there are two copies of the same list!
// (one from the line below, and on from App.List.findAll)
return App.List.findById(params.list_id)
},
});
ListsController和ListController都存在于同一页上。当我直接导航到一个list/lists/:list_id并编辑一个列表,然后单击{{linkTo list l}}链接时,会显示原始的未编辑列表
我想我想要的是在浏览器中一次只能有一份列表。或者有更好、更惯用的解决方案
我应该提到,我没有使用余烬数据。我正在使用jQueryAjax获取数据
编辑:
我认为这是措词不当。我想弄清楚如何在同一页上有两个控制器。一个控制器具有对象列表,另一个控制器具有其中一个对象的详细视图。我发现细节视图中的对象需要与列表中的对象相同
当开始使用列表视图和空索引视图时,这似乎很有效。使用{{linkTo item}}单击对象效果很好。当我深入链接到该对象时,我会得到同一对象的副本,因为我从服务器上获取列表和单个项目
然后,这些多个对象允许数据看起来不同步
处理这一问题的好策略是什么?解决问题的概念性解决方案是身份地图。Martin Fowler在这里描述: 余烬数据和余烬模型包含一个身份映射,原因与您遇到的相同 下面是一个简单的实现,您可以根据应用程序进行调整:
谢谢,@Luke Melina。很高兴知道这一点。你知道两个控制器如何工作吗?其中一个控制器加载对象列表,另一个加载单个对象。单个对象包含在另一个控制器的对象列表中。这似乎是一种常见的情况。事实上,peepcode screencast构建了一个与此非常类似的应用程序,因此我觉得可能有一个简单的解决方案,或者某个地方我没有采用惯用的ember方式。对于两个控制器的简单用例,可以通过从列表控制器的集合中查找单对象控制器来实现这一点