javascript - 使用 Promise 对 Ember 对象数组进行排序
问题描述
我有一个模型模型/人
{
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 对象的数组检索。因为项目 -> 用户是异步的,所以它是一个承诺。我想使用该人的名字对该数组进行排序。当数据相应到达并重新渲染正在使用列表的 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');
})
renderProjects
每当项目列表更改或任何项目更改时,这将重新计算CP firstName
,然后自动更新您的视图。
一个重要通知:你不能这样做.@each.foo.bar
。这就是你在玩弄.model.@each.myUser.name
在您的旋转中,最简单的解决方法是将 a 添加computed.alias
到video
模型中:
username: computed.alias('myUser.name'),
然后你可以这样做:
sortedVideos: computed('model.@each.username', function() {
return this.get('model').sortBy('username');
})
推荐阅读
- ios - UITabBar:没有出现顶行?
- mysql - 使用 LIMIT mysql 优化查询
- python - Python request.url 未返回浏览器中显示的完整 url
- terminal - Visual Studio Code:并非所有错误/警告消息都显示在终端窗口中
- java - Hashicorp Vault + GKE 上的“java.net.SocketTimeoutException:连接超时”
- java - S3 客户端未在 WebLogic 12c 上构建
- entity-framework - 突然出现大量 EF 实现错误
- c++ - 在 main 之外调用的构造函数
- flutter - Obx 不更新 RangeSlider GetX
- javascript - Solana - 如何从我的 Phantom 钱包中获取余额?