嘿,我需要修改一些从 DataStore 获得的记录。如果我在我的路由器中添加以下代码,我可以看到请求被传递到我的模板,但我无法修改集合的每个请求,因为集合是空的。
model() {
return this.store.findAll('user').then(function(users) {
console.log(users.get('length')); // 0
return users;
});
}
我认为当从服务器获取所有记录时,承诺会得到解决,但情况似乎并非如此。还是我完全错过了什么。
我还尝试在 afterModel 回调中修改模型,结果相同。
我正在使用 Ember 1.13.0(带有 Ember-CLI)、Ember-Data 1.13.4 和 ember-cli-mirage 来模拟我的 HTTP 请求。
更新: 我设法为这个问题创建了一个解决方法。在我的控制器中,我创建了一个新属性来侦听 model.@each,然后我能够修改模型并将其传递给视图。
export default Ember.Controller.extend({
users: function() {
return this.get('model.users').filter(function(user) {
// The Promise is resolved twice
// The first time with an empty model and the second time with
// the actual data. So I filter the empty model.
return user.get('id');
}).map(function(user) {
// do fancy stuff with our user
return user
});
}.property('model.@each')
});