gpt4 book ai didi

javascript - 使用 Promises 对 Ember 对象数组进行排序

转载 作者:行者123 更新时间:2023-11-30 11:11:35 26 4
gpt4 key购买 nike

我有一个模型模型/人

{

firstName: DS.attr( 'string'),
lastName: DS.attr( 'string'),
email: DS.attr( 'string' ),
}

和另一个模型模型/项目

{

name: DS.attr( 'string' ),
code: DS.attr( 'string' ),
startDate: DS.attr( 'date' ),
endDate: DS.attr( 'date' ),
users : DS.hasMany('person', {async: true}),

}

然后我将检索所有项目作为一个包含 ember 对象的数组。因为项目 -> 用户是异步的,所以它是一个 promise 。我想使用此人的名字对该数组进行排序。当数据相应到达并重新渲染正在使用列表的 hbs

我有一个计算属性叫做

renderProjects = computed ('model.projects.[]')
{
// trying to sort in here but data is not avaiable so its not getting sorted
}

最佳答案

解决方案就是使用.@each:

renderProjects: computed ('model.projects.@each.firstName', function() {
return this.users.sortBy('firstName');
})

这将在项目列表更改或任何项目上的任何 firstName 更改时重新计算 renderProjects CP,然后自动更新您的 View 。

一个重要的通知:你不能.@each.foo.bar。这就是您在 twiddle 中所做的使用 model.@each.myUser.name

在您的游戏中,最简单的解决方法是将 computed.alias 添加到 video 模型:

username: computed.alias('myUser.name'),

然后你可以这样做:

sortedVideos: computed('model.@each.username', function() {
return this.get('model').sortBy('username');
})

Here is a fixed twiddle .

关于javascript - 使用 Promises 对 Ember 对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53422860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com