텍스트 필드를 감싸는 엠버 구성 요소가 있습니다. 사용자가 입력 할 때 검색 작업을 시작하려고합니다. 텍스트 필드가있는 Ember 구성 요소
#search-box.js.coffee
App.SearchBoxComponent = Ember.Component.extend
classNames: ['form-group', 'has-feedback']
term: ""
placeholder: "Search"
actions:
search: ->
console.log "Searching..."
# search-box.emblem
= input type="text" value=term class="form-control" placeholder=placeholder keyUp="search"
이
는 값 및 기간 간의 바인딩을 유지하지만 KeyUp 이벤트는 검색 창 성분에 거품을 엠버 입력 요소로 진행하지 않는다.=
을 삭제하고 대신 표준 HTML 입력을 사용하면 작업이 올바른 구성 요소로 전송되지만 바인딩이 끊어져서 검색어가 손실됩니다.
구성 요소 내부에서 동작과 함께 입력을 사용하는 적절한 방법은 무엇입니까?
EDIT : 다른 방법 (이 경우, 제) 비 활동 기간 후에 검색의 추가 어려움 JQuery와 함께 수행하려고
:
App.SearchBoxComponent = Ember.Component.extend
classNames: ['form-group', 'has-feedback']
delay: 1000
didInsertElement: ->
$input = @$('input')
$input.on 'keyup', =>
clearTimeout(timer)
if $input.val
console.log this
timer = setTimeout(@_performSearch, @get('delay')
_performSearch: ->
console.log this
console.log "Searching for #{@get('q')}"
_performSearch
이 호출되면 this
이 이제 window
이고 Ember 클래스의 컨텍스트가 손실되었습니다. 또한 모든 기능을 화살표로 변경하여 아무런 기능도 변경하지 않고 this
의 컨텍스트를 변경하려고 시도했지만 아무 소용이 없습니다. setTimeout 호출 내에서 익명 함수를 만들면 작동하지만 엠버 객체에 대한 메서드를 호출하면 작동하지 않습니다.
ember의 keyUp을 사용하여 행운을 빕니다. 나는 결코 작동하지 않습니다 ...하지만 실제 텍스트 필드보기를 확장하는 구성 요소를 만들면 가능합니다. 실제 javascript keyup 이벤트를 사용하여 일부 동작을 트리거 할 수 있습니까? – Grapho