최근에 내 응용 프로그램에서 버그가 생겼는데, 어떻게 변경되었는지 알지 못한다. (나는 여전히 1.13 인 Ember 버전을 업그레이드하지 않았다.) 알아 내야 할 것은 기존의 방식으로 모델의 단일 레코드 객체에 액세스하는 방법입니다.모델의 단일 레코드에서 데이터 개체를 가져 오는 방법은 무엇입니까?
나는 필터링하려면 다음 코드를 내 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
내에서 선이의를, 그래서는 CH 그것을 summary = recordsBySelectedShapeAndColor[0]._internalModel._data;
에 anged하고 그것은 작동하지만 물고기 같아 보인다 (._data
항상). 밑줄 친 속성에 액세스하는 것이 코드 냄새입니까? 그렇다면 어떻게 모델의 단일 레코드에서 데이터 만 가져올 수 있습니까?
이런, ?? 모든 것입니다 'recordsBySelectedShapeAndColor.firstObject'를 시도했는데 데이터 객체를 볼 수없는 클래스를 반환 했으므로 어디에도 가지 않았기 때문에 아직 거기에 없었습니다. 고맙습니다!!! 이것 역시 잘 작동하는지 모르겠다.'recordsBySelectedShapeAndColor.get ("firstObject")' – redOctober13
ember에서는 항상'.get'을 사용한다! 그리고 이것은 실제'Array'가 아니라 Ember' Enumerable'입니다. – Lux
고마워요 @ 럭스. 이 (https://stackoverflow.com/questions/40606827/difference-between-ember-get-and-this-get)에서,'Ember.get()'에 대한 좋은 유스 케이스가있는 것 같습니다. 'get()'이 Ember 객체가 아닌 경우'this.get()'이 실패하는 동안 계속 작동하기 때문에 당신의 객체가 Ember 객체인지 여부를 모른다면 get()을 호출하십시오. – redOctober13