【发布时间】:2018-12-27 16:11:54
【问题描述】:
第一件事,我的班级:
export class FooBar {
...
isFavorite: boolean = false;
constructor() {
this.isFavorite = false;
}
}
使用 Lodash 我对FooBar 的列表进行排序,因此我的最爱将位于列表顶部:
this.fooBars = _.orderBy(this.fooBars, ['isFavorite', 'name'], ['desc', 'asc']);
当我收藏一个项目并查看我的 console.log 时,它会这样说明:
注意#3 没有 isFavorite 属性...
每当我从未设置isFavorite 时,它都不会显示。这使得 Lodash 排序错误。
有没有办法始终显示这个属性,即使它是未使用/未设置/假的?
我试过了:
- 在类中将属性设置为 false
- 在类的构造函数中将属性设置为 false
- 在我的组件中循环 this.foobars,将它们全部设置为 false
- 为FooBar添加接口
【问题讨论】:
-
在类声明中将 isFavorite 属性默认为 false 应该可以工作
-
您已正确识别问题:在 JavaScript 中,默认值为
undefined。如果您可以向我们展示这些对象的构造代码,我们或许可以帮助您正确设置默认值 -
@Vlad274 有效问题...数据来自 .NET MVC API,但该 .NET 类没有 isFavorite 属性。可能是因为从 .NET 对象到 json 的序列化,属性被删除,因为它在 API 端不存在?
-
基于没有该属性的 .NET 类,与其说它“被删除”,不如说它一开始就不存在。如果您正在执行一些 Angular 绑定以将其设置为 true(例如使用复选框),这是我所期望的行为。如果您绝对 100% 需要该属性存在,您可以使用
.map方法将其添加到服务中的对象中。
标签: javascript json angular typescript lodash