지금 백본 및 언더 코어를 배우고 있으며 모의 이메일 응용 프로그램을 조금 만들고 있습니다.여러 템플릿 렌더링
나는 JSON
전자 메일 모음을 내보기에 전달하여 정렬되지 않은 목록에 표시했습니다. 내가 원하는 것은 항목을 클릭하고 전자 메일의 내용을 표시하는 목록 옆에 렌더링 된 별도의 서식 파일을 갖는 것입니다.
코드 내보기에서 니펫을 :
html로 템플릿 :
<div>
<h1>Backbone test data bind to view</h1>
<hr/>
<div class="page">
</div>
<div class="content">
</div>
</div>
<script type="text/template" id="email-list-template-styled">
<div class="tab">
<ul>
<@ _.each(emails, function(email){ @>
<a class="tablinks" data-id="<@= email.get('id') @>" href="backbone" >
<td> From: <@= email.get('sender') @> </td> </br>
<td> To: <@= email.get('recipient') @> </td> </br>
<td> Date: <@= email.get('dateSent') @> </td> </br>
</a>
<@ }) @>
</ul>
</div>
</script>
<script type="text/template" id="email-content">
<div id="emailContent" class="tabcontent">
<h3>From: sender</h3>
<h3>To: recipient</h3>
<h3>Subject: subject</h3>
<h3>Date: dateSent</h3>
<p>message</p>
</div>
</script>
자바 스크립트 :
<script type="text/javascript">
var EmailsList = Backbone.Collection.extend({
url : 'backbone/getEmails.html'
});
var Email = Backbone.Model.extend({});
var EmailList = Backbone.View.extend({
el: '.page',
events: {
'click' : 'showAlert'
},
showAlert: function(e){
e.preventDefault();
var that = this;
var id = $(event.target).data('id');
var Email = Backbone.Model.extend({
url: 'backbone/getEmail/' + id
});
var email = new Email();
email.fetch({
success: function(email){
console.log(email.toJSON());
var template = _.template($('#email-content').html(), {email: email.models});
that.$el.append(template);
}
})
},
render: function(){
var that = this;
var emails = new EmailsList();
emails.fetch({
success : function(emails) {
console.log(emails.toJSON());
var template = _.template($('#email-list-template-styled').html(), {emails: emails.models});
that.$el.html(template);
}
})
}
});
var emailList = new EmailList();
var Router = Backbone.Router.extend({
routes:{
'': 'backbone'
}
})
var router = new Router();
router.on('route:backbone', function(){
emailList.render();
});
Backbone.history.start();
</script>
단일 객체 데이터 예 :
dateSent:"2017-03-21 08:36"
id:3
message:"Message3"
recipient:"Recipient3"
sender:"Sender3"
subject:"Subject3"
지금까지를 그럭저럭 클릭 이벤트를 클릭하는 이메일의 ID입니다. 단일 전자 메일 개체 (정확한 전자 메일 JSON
)를 전달하는 템플릿을 렌더링 할 때보 다 여러 인스턴스를 생성하고 email-content
템플릿에 인쇄 된 변수를 얻는 순간 템플릿을 추가하고 있습니다. 오류가 발생합니다 : 그래서 질문이 될 것
<h3>From: sender <@= email.get('sender') @></h3>
:
가 어떻게
가 어떻게에서 이메일 변수에 액세스 할 컨텐츠 템플릿을 렌더링 다시 할 수 Uncaught TypeError: Cannot read property 'get' of undefined
을 내가 좋아하는 뭔가를 입력 할 때 콘텐츠 템플릿?
답을 보내 주셔서 감사합니다. 이메일에서 모델 삭제가 도움이되었습니다. 지금은 데이터를 표시 할 수 있습니다. 이벤트에서 이메일을 이동 'var에 이메일 = Backbone.Model.extend ({ \t UrlRoot에 '백본/가령 getMail /' });' – mindz
나는 내가 통과 할 방법에 대한 자세한 내용은 다른 뷰를 정의하는 경우 보기에 선택한 전자 메일? – mindz
@mindz'showAlert : function (e) {this.emailView = 새 EmailView ({model : model})}}'. 그리고 EmailListView'el' 또는 특정 컨테이너에 EmailView'el'을 추가 할 수 있습니다. EmailListView 트리거 및 이벤트를 'this.trigger ('show-email ', {id : id});와 같은 응용 프로그램의 다른 곳에서들을 수 있으며 이벤트 데이터의 모델 ID –