【发布时间】:2015-09-21 03:41:42
【问题描述】:
我有一个名为 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 请求再次发出!
- 在此基础上,过滤仅适用于初始页面加载。如果我进入一个列表然后点击后退按钮,子列表会保留在页面上(没有错误或任何东西!)。
检查父关系是否存在的正确方法是什么?
另外,过滤整个列表以找到一条记录的正确方法是什么?
是我的无知导致后退按钮出现问题吗?
【问题讨论】:
-
Ember.isEmpty(list.get('parent').get('content')) 你可以去 ParentExists: Ember.computed.notEmpty(xx)
标签: ember.js ember-data