2012-10-17 2 views
2

을 대체 : 나는 현재 요소를 교체하려면 (I 생성자에서 호출 있음) 뷰 렌더링 기능에

var myView = new BackboneView({ el: '#some-div'}); 

을 (나는 그것을 포장 할 다른 div에 넣거나 다른 요소를 앞에두고 새로운 요소를 뷰의 마스터 요소로 만듭니다. 이 작업을 수행하는 방법? 나는 이것을 시도하고있다 :

this.original_el = this.$el; 
this.$el.replaceWith('<div class="new-div"></div>'); 

단계별 디버깅 나는 브라우저에서 바뀌는 div를 보지만, $ el은 여전히 ​​오래된 값이다. 한편

,

this.$el.setElement('<div class="new-div"></div>'); 

.이 대체 $ 엘을하지만, 새로운 사업부는 브라우저에 표시되지 않습니다. 어떤 도움이 필요합니까? 감사합니다

+3

모두 :) http://stackoverflow.com/questions/11594961/backbone-not-this-el-wrapping/11598543#11598543 – nikoshr

+0

와우, 내가 너무 가까이했다! 아 아 감사합니다. – pistacchio

답변

7

백본에 문제가 발견되었습니다 repo on GitHub. 백본 (Backbone)이 자동으로이 작업을 수행하지 않아서 읽을 수있는 충분한 이유가 있습니다. 해결 방법은 DOM에서 $el을 바꾸고 백본보기를 업데이트하는 것입니다. 보기의 방법 :

this.$el.replaceWith(newElement) 
this.setElement(newElement)