ember.js를 탐색하는 방법으로 100 % 기능 호환 버전으로 백본 todo 예제 응용 프로그램을 다시 만들고 있습니다. 내가 실행 한 첫 번째 문제점은 생성 된 할 일을 편집하기 위해 더블 클릭 한 후, Ember.TextField에서 blur 이벤트를 처리하여 편집 모드를 종료하는 방법입니다. 다음과 같이 현재 코드는 다음과 같습니다 나는 Ember.TextField에 의해 정의 된 입력 요소에서 blur 이벤트는 것 거품 내 시야까지하지만 내보기에 흐림 핸들러가 결코 호출되는 것 같다 것으로 가정했다Ember보기의 TextField 자식 흐림 처리
<script type="text/x-handlebars" data-template-name="todo-list-template">
<ul>
{{#each App.TodosController.todos}}
{{#view App.TodoView tagName="li" contentBinding="this"}}
{{#if editMode}}
{{view Ember.TextField valueBinding="content.text"}}
{{else}}
{{content.text}}
{{/if}}
{{/view}}
{{/each}}
</ul>
</script>
App.TodoView = Ember.View.extend({
editMode: false,
doubleClick: function(evt){
this.set('editMode', true);
},
blur: function(evt){
this.set('editMode', false);
}
});
. 사용자 정의 App.TextField
가 정의하는 이유
우물에서 작업 예제를 참조하십시오. 지금까지는 ember를 좋아하지만 때로는 새로운 뷰 객체에 각 노드를 래핑 할 필요없이 자식 노드의 DOM 이벤트를 처리 할 수 있기를 원합니다. 그 스타일에 조금 어긋나거나 심지어 코드 냄새라고 생각합니다. – user1117841
이벤트를 처리하려는 경우 일반적으로 이러한 이벤트를 캡슐화하기 위해 새보기를 만들어야한다고 생각합니다. 우리는 간단한 대상/액션 사례를위한 솔루션을 개발하고 있지만 포커스/흐림의 경우 사용자 정의보기를 만들기에 충분할 정도로 복잡합니다. –