最近这成了我的应用程序中的一个错误,虽然我不知道是什么改变了它(我没有升级Ember的版本,仍然是1.13)。我需要知道的是如何以传统方式访问模型上单个记录的对象。
我有以下代码根据其他两个属性过滤我的model
:
recordsBySelectedShapeAndColor = get(this, "model").filter(function(rec) {
//filter the model by the chosen shape and color
return (
get(rec, "shape") === theShape &&
get(rec, "color") === theColor
);
});
然后我需要创建那些我正在使用reduce()
的过滤记录的摘要,但如果该过滤器只返回一条记录,则reduce
不会返回正确的结果,所以我有以下条件:
if (recordsBySelectedShapeAndColor.length < 2) {
summary = recordsBySelectedShapeAndColor[0]._data;
} else {
summary = recordsBySelectedShapeAndColor.reduce(function(a, b) {
...
}
if
中的行不再返回一个简单的对象,因此我将其更改为summary = recordsBySelectedShapeAndColor[0]._internalModel._data;
并且它有效,但看起来很可疑(._data
总是这样做)。访问下划线属性是代码味吗?如果是这样,我怎样才能从模型中的单个记录中获取数据?
答案 0 :(得分:1)
使用get(recordsBySelectedShapeAndColor, 'firstObject')