2012-03-07 3 views
1

백본보기가 있고 정기적으로 el의 내용을 바꾸고 있다고 가정하면 새로운 조정 된 el 내용에 대해 비 이벤트 작업을 어떻게 다시 실행할 수 있습니까? 예를 들어; 내용을 대체했고 모든 링크에 라이트 박스 스크립트를 사용하고 싶다고 말합니다. 스크립트를 정상적으로 부착하려면 render에서 이와 같은 작업을 수행하십시오.백본보기에서 el 변경 사항 모니터링?

this.$el.find('a').box() 

하지만 콘텐츠를 교체 한 후에는 다시 실행해야합니다. 엘 컨텐츠가 대체되는시기를 반드시 알 필요가 없다는 것을 감안할 때, 어떻게 다시 실행 하시겠습니까? 나는 위임 할 수있는 이벤트를 찾을 수없는 것 같습니다. 작동 할 수있는 것처럼 모든 사운드를 준비하고로드하고 변경하지만 아무 것도 할 수 없습니다. 이상적으로, 저는 이벤트 해시에 넣을 수있는 것을 각각의 교체 후에 그 것을 실행하는 메소드를 호출하기를 원합니다.

+0

대체 코드는 항상 같은 위치에 있습니까? – Eli

+0

콘텐츠를 대체 할 수있는 여러 가지 구성 요소가 있으므로 충분히 잘 분리 된 트리거 방법을 알아 내서 사용하는 플러그인을 다시 실행하라는 일종의 "변경"이벤트를 찾아야합니다. –

+0

콘텐츠 자체가보기 또는보기의 일부입니까? – Eli

답변

1

당신은 당신의 초기화에이 작업을 수행 할 수 있습니다

$(this.el).livequery(function() { 
    // perform selector on $(this) to apply box 
}); 

는 뻔뻔하게 도난 약간 jquery live event for added dom elements

+0

Eww ...이 작업을 위해 전체 타사 라이브러리를 넣고 싶지 않습니다. 지금은 컨텐트가 변경된 모든 곳의 컨테이너에서 변경 이벤트를 수동으로 트리거하는 것입니다. 일종의 해커지만 적어도 이벤트 정의를 표준으로 유지하고 타사 라이브러리에 의존 할 필요가 없습니다. 특히 2 년 후에 업데이트되지 않았다고 생각하면 좋습니다! –

+0

게다가 livequery를 기반으로합니다. 이것은 jQuery'live'와 비슷합니다. 왜냐하면 악의 때문에 그것들은 사용되지 않을 것입니다. – Eli

+0

충분히 공정합니다. 백본보기가 모델 변경 작업이 아니라 변경 이벤트로 인해 이루어진 것이 아니라면 백본보기를 벗어나는 것이별로 없습니다. 그것은 정말로 유일한 convinion입니다 (http://documentcloud.github.com/backbone/#View의 첫 번째 단락을보십시오) – timDunham

0

당신은 이벤트 애그리 게이터 (aggregator)를 사용할 수 있습니다에서 수정했습니다. 집계에서 이벤트를 만들 때마다 실행되는 함수에 바인딩되는 이벤트를 만듭니다. 엘 컨텐츠를 대체 할 때마다 생성 한 이벤트를 트리거하십시오. 더 자세한 설명을 보려면이 문서를 참조하십시오. Event Aggregator