Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 浏览器中同一对象的多个副本,带有Ember和远程数据存储_Ember.js - Fatal编程技术网

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方式。对于两个控制器的简单用例,可以通过从列表控制器的集合中查找单对象控制器来实现这一点