您好我有点困惑ember如何工作,我有一个我正在创建的应用程序,它列出了特定用户的任务。这是我的模特:
&a[0] = &b[0];
这是我在任务列表中添加任务的时候。然而,当我在我的任务列表中获得所有任务时,我在我的路线中使用它:
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
location: DS.attr('string'),
date: DS.attr('date'),
archive: DS.attr('boolean'),
user: DS.attr('string'),
});
为了过滤所有用户的任务,我将其添加到我的控制器中:
model: function () {
return this.store.findAll('task');
}
所有这一切都很好。但是,当我向任务列表添加新任务时,它不会更新我的任务列表,所以我必须重新加载我的页面。这可以自动完成,而无需刷新我的页面吗?
答案 0 :(得分:1)
findAll
返回的数组是一个实时数组,它将始终包含商店中的所有记录。但是,您的CP具有错误的依赖关键字。依赖关键字应该包含.[]
或.@each.?
,或者它不会监听数组更改。因为您使用user
属性,所以它应该是model.@each.user
。您也可以将当前用户添加到依赖关系密钥。
最后您的CP根本无法工作,因为过滤器函数中的this
是过滤器函数的this
,而不是Controller。您应该使用箭头功能或将this
保存到变量。
同样item.data.user
似乎错了,可能应该是item.get('user')
。
所以最终的CP是:
filteredModel: Ember.computed('model.@each.user', 'session.user.email', function(){
return this.get('model')
.filter(item => item.get('user') == this.get('session.user.email'));
}),