2015-01-06 3 views
6

관찰이 충돌하지 않는 emberjs 구성 요소의 시나리오가 있습니다. 원인을 파악하기 위해 "관찰중인 구성 요소 속성을 설정할 때 구성 요소가 아직 삽입되지 않았습니다."ember js 구성 요소 관찰자가 작동하지 않습니다.

내 질문에 대한 답변은 ember js에서 더 좋은 방법으로 처리 될 수 있습니까?

더 나은 설명은 아래 jsbin`s에서 찾을 수 있습니다.

Not working Scenario

Working scenario

+0

? 이 시나리오에서 두 관찰자 함수는 (Ember.Computed를 통해) 계산 된 속성으로 더 잘 제공 될 것입니다. – awgreenarrow08

+0

동의, 옵저버는 두 상황 모두에서 과도한 행동입니다. – Kingpin2k

+0

의견에서 언급 한 것처럼 이것이 실제 사례는 아니며 모범 사례였습니다. 실제 유스 케이스는 그것을 단순하게 생각한 거대한 것입니다. 기본적으로 관찰자에는 많은 계산이 있으며 다른 속성에 할당하는 것이 아닙니다. 또한 이라고 말하면 "관찰자 함수 둘 다 더 나은 계산 된 속성으로 제공 될 것입니다" 구성 요소에서 계산 된 속성을 사용하면 작동하지 않을 수 있습니다 왜 관찰자가 작동하지 않는 동일한 이유 때문에 – wallop

답변

14

당신이 바로 초기화 후 실행하는 관찰자를 강제로 .on('init')를 지정할 수 있습니다; 그렇지 않으면 @ Kingpin2k 같은 언급 - 그들은

App.TextboxDisplayComponent = Ember.Component.extend({ 
    displayText: '',   

    boundProperty: '', 

    observeBoundProperty: function() { 
    this.set('displayText', this.get('boundProperty'));   
    }.observes('boundProperty').on('init') 
}); 

당신의 (비) 작업 예를 실행하지 않는 here

정확히 당신이 여기 달성하려는 어떤
+1

정확히 내가 뭘 원했던가 내가 이것을 시도했을 때 관찰자가 "('init')에 맞았을 것이라고 생각하고 일반적인 변화가 일어날 때 맞지 않을 것이다. 이제 나는 그것을 테스트했고 변경이있을 때조차도 발생합니다. – wallop

+0

그러나 나는 단지이 개념을 이전에 사용하지 않은 이유를 깨달았습니다. boundProperty가 변경되지 않아도 observeBoundProperty가 init에서 실행됩니다. 만약 내가 관찰자가 변화에 대해서만 타격을 받고 싶다면 많은 도움이되지는 않을 것입니다.) 그럼에도 불구하고 나는 그 안에 상태 검사를 할 수 있었고 가장 중요한 것은 훨씬 더 깨끗한 버전이었습니다! – wallop

관련 문제