2017-11-10 3 views
0

최근에 내 응용 프로그램에서 버그가 생겼는데, 어떻게 변경되었는지 알지 못한다. (나는 여전히 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 항상). 밑줄 친 속성에 액세스하는 것이 코드 냄새입니까? 그렇다면 어떻게 모델의 단일 레코드에서 데이터 만 가져올 수 있습니까?

답변

1

사용 get(recordsBySelectedShapeAndColor, 'firstObject')

+0

이런, ?? 모든 것입니다 'recordsBySelectedShapeAndColor.firstObject'를 시도했는데 데이터 객체를 볼 수없는 클래스를 반환 했으므로 어디에도 가지 않았기 때문에 아직 거기에 없었습니다. 고맙습니다!!! 이것 역시 잘 작동하는지 모르겠다.'recordsBySelectedShapeAndColor.get ("firstObject")' – redOctober13

+1

ember에서는 항상'.get'을 사용한다! 그리고 이것은 실제'Array'가 아니라 Ember' Enumerable'입니다. – Lux

+1

고마워요 @ 럭스. 이 (https://stackoverflow.com/questions/40606827/difference-between-ember-get-and-this-get)에서,'Ember.get()'에 대한 좋은 유스 케이스가있는 것 같습니다. 'get()'이 Ember 객체가 아닌 경우'this.get()'이 실패하는 동안 계속 작동하기 때문에 당신의 객체가 Ember 객체인지 여부를 모른다면 get()을 호출하십시오. – redOctober13

관련 문제