바인딩이 작동하려면 Ember는 바인딩 된 값이 변경되어 동기화되는시기를 알아야합니다. Ember가 값이 변경되었음을 알기 위해서는 Ember.set
을 사용해야합니다. 예 : Ember.set
를 사용하지 않고 특정 속성 변경, 엠버는 그것을 동기화해야한다는 모르는
그래서
object.set('value', 'I changed');
// This says: Ember, my value has changed, please sync!
. 결과적으로이 이벤트 변경 내용을 청취하고 Ember에게 Ember.set
을 사용하여 변경되었음을 알릴 필요가 있습니다.
입력 값에서 발생하는 문제입니다. 입력 할 때 값은 변경되지만 Ember.set
은 호출되지 않습니다. 따라서 Ember.TextField
은 무엇입니까? keyup
및 change
및 기타 이벤트를 듣고 이러한 이벤트 중 하나가 발생하면 Ember.set
으로 전화합니다. 물론
, 당신은 이 그들을 사용하는이없는,하지만 당신은 수동으로 변경을 듣고 값이 변경 것을 엠버에게해야합니다 :
내가 왜 표시되지 않습니다) this.set('value', this.$().val())
를 거의 모든 것을 할 수 있기 때문에 Ember.TextField
을 사용하는 데 문제가 있습니다. 모든 일은 직접 이벤트를 듣는 수고를 덜어줍니다.
:
{{view Em.TextField placeholder="Twitter username" valueBinding="username" type="search"}}
로 입력 거의 같은 양이다 : 당신이 도움이 될
한 것은 당신이 직접 대신을 확장 뷰를 만드는, 템플릿에서 사용할 수 있다는 것입니다
<input type="search" placeholder="Twitter username" value="some value" />
참고 : 위에서 제공 한 예에서 이전 튜토리얼을 따르고있는 것처럼 보입니다. 조심하십시오. 그 이후로 많은 부분이 변경되었습니다.
고맙습니다! 질문에 대답하기 위해서 유일한 문제는 대부분의 UI가 클라이언트에서 수행되어야한다는 것입니다. 특히 IE에서 매우 느려질 수 있습니다. 1000 개 요소를 다루는 관리자 패널의 일부분을 상상해보십시오. 그런 다음 어떻게됩니까? –
속성을 직접 바인드 할 수 있는지 또는보기를 사용해야하는지 여부에 관계없이 JS에서 렌더링해야합니다. 그것이 Ember가 작동하는 방법입니다. JS에서 렌더링하는 것은 주어진 것입니다. ~ 1000 요소에 성능 문제가있는 경우 UI (~ 1000 요소가 많이 있음)를 다시 생각해 보거나 Ember가이 프로젝트에 가장 적합한 지 다시 생각해보십시오. –