0
나는 Backbone.js을 배우려고하고 있는데, 이제는 모델 모음을보기에로드하려고합니다. 내가 지금 TICKETID에 속하는 메시지의 컬렉션을로드하려면이 tempalte에서로드 방법 Backbone View에서 모델 모음을로드 하시겠습니까?
<script type="text/template" id="tab-content-template">
<div class="conversation-window" id="conversation<%= ticketId %>"></div>
</script>
: 창에 탭을 열면, 내가 먼저 다음과 같은 템플릿을 추가합니다.
var MessageCollection = Backbone.Collection.extend({
url: 'ticket/:id/messages'
});
및 전망 :
var MessageView = Backbone.View.extend({
initialize: function(models, options) {
this.ticketId = options.ticketId;
},
el: function() {
return '#conversation' + this.ticketId;
},
className: 'user-message'
});
그래서 내가 메시지의 목록 (TICKETID 1의 경우) #의 conversation1 내에 삽입 할 그래서 이런 컬렉션을했다. 나는 다음이 실행 시도 :
var messageView = new MessageView(messageCollection, {ticketId: 1});
messageView.render();
console.log(messageView);
불행하게도 아무 일도 발생하지 않고, 내가 콘솔로 볼 때 나는 ticketId: 1
하지만 el: undefined
것을 알 수있다. 나는 내가 잘못하고있는 일에서 다소 잃어 버렸습니다. (일반적으로 백본에서 다소 손실되었습니다.)
내가 아는 사람이 누구인지 여기에서 잘못 알고 어떻게 해결할 수 있습니까? 모든 팁을 환영합니다!
내가, 당신이이'그 안에 모델을 채우는 컬렉션에') (가져 오기 실행하는 경우 확실하지 않다 'messageView'에'messageCollection'을 설정합니다 (일반적으로'models'보다는'collection'에 설정합니다). 또한 내보기에서 내 템플릿에 대한 직접 링크가 표시되지 않습니다. 데이터가있는 모델을 보거나 페이지 렌더링을 원한다면 잘 모르겠습니다. – dylants
보기에서 '엘'을 정의하면 기존 요소 (이 경우 ID가 '대화 1'인 요소)를 관리하도록 백본에게 말합니다. 해당 요소는 메시지 상단에 게시 한 템플릿 내에 있습니다. messageView를 인스턴스화하기 전에 확실히 페이지에 렌더링하고 있습니까? –