我遇到了hasMany属性的问题,但仅在某些情况下。我有一个用户模型和一个组模型。用户有一个属性:
groups: hasMany('group', { async: true })
在我的模板中,我会显示群组:
{{#each groups}}<span class="label">{{this.name}}</span>{{/each}}
当我转到/ users / 1时,我会看到这些组。然后我可以去/ users / 1 /编辑。在那里,我显示了一个Ember.Select视图,其中multiple = true。选择视图将“groups”显示为选择,将“allGroups”显示为完整列表。这按预期工作。 'allGroups'是UserEditController上的计算属性:
allGroups: function() {
return this.store.find('group');
}.property()
到目前为止,这么好。如果需要,我可以更新选定的组,然后保存。保存后,我转换回/ users / 1路由。当用户显示在那里(更新后)时,所选组不显示任何内容。控制台没有错误。
我可以刷新页面并显示所选的组,显示我在更新用户时所做的新选择。
这个令我困惑,但我怀疑它与'allGroups'功能有关。
答案 0 :(得分:0)
您使用的是什么版本的Ember-Data?这听起来像已知的错误,应该在1.0.0-beta-3中修复:
https://github.com/emberjs/data/commit/4d717bff53f8c93bedbe74e7965a4f439882e259 https://github.com/emberjs/data/issues/1228 http://discuss.emberjs.com/t/hasmany-relationships-and-waiting-for-all-child-models-to-be-loaded/2461/3
第二个链接包含一个解决方法,如果必须使用早期版本的ember-data,该解决方法应该有效。
答案 1 :(得分:0)
之前我遇到过这个问题,但在这种情况下,您不需要手动处理同步问题。 Ember会在收到数据时呈现数据......
请提供更多代码,我会看看,我认为这可能与您进行保存的方式有关。
此外,虽然我注意到了这一点,但是当您继续更新后端时,我认为应该返回“已插入”或“已更新”的数据。这有助于确保与后端同步。