我有一个叫做List的模型,它代表了一棵导航树。我应该能够进入子列表,并点击返回按钮返回到父列表。
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
children: DS.hasMany('list', { inverse: 'parent' }),
parent: DS.belongsTo('list', { inverse: 'children' })
});
我通过查找没有父级的列表来确定路由文件中的“根”级别列表。
import Ember from 'ember';
export default Ember.Route.extend({
model(){
return this.store.findAll('list').then(function(lists){
return lists.filter(function(list){
if(Ember.isEmpty(list.get('parent').get('content'))) {
return true;
}
else {
return false;
}
}).get('firstObject');
});
}
});
我觉得我的实现有很多问题,尽管在初始页面加载时它可以工作。
Ember.isEmpty(list.get('parent').get('content'))
完全不是检查父级关系存在的正确方法。- 我觉得我可能没有正确地过滤整个列表集合。 我故意调用索引API请求以便加载所有列表,但当我导航到子列表并单击后退按钮时,XHR请求会第二次发出!
- 在此基础上衍生出的问题是,过滤仅限于初始页面加载。如果我进入列表然后点击后退按钮,则子列表将保留在页面上(没有任何错误!)。
检查父级关系存在的正确方法是什么?
此外,找到一条记录的正确过滤整个列表的方法是什么?
是我的无知导致了后退按钮的问题吗?