이 기사 (http://coenraets.org/blog/2012/01/backbone-js-lessons-learned-and-improved-sample-app/)를 보았습니다. 인스턴스화 한 후 라우터에서 뷰를 바인딩하고 렌더링하는 것이 가장 좋은 방법인지 궁금합니다. 내 견해를 구속하고 내 뷰 정의에서 렌더링했습니다.Backbonejs 뷰 바인딩 개념적 피드백
현재이 내가 설정하고 내 의견을 호출했습니다 방법입니다
EmployeeView :
EmployeeView = Backbone.View.extend({
el: '#content',
template:template,
initialize: function() {
this.collection.fetch({
reset: true
});
this.collection.on('reset',this.render, this);
},
render: function(){
this.el.innerHTML = Mustache.to_html(this.template, { employee_list: this.collection.toJSON()});
console.log('render called');
}
내 라우터 :
employeeList: function() {
var c = new EmployeeCollection
new EmployeeView({
collection: c
});
}
그것은 잘 작동합니다. 그러나 기사에 따라 더 나은 연습은 다음을 수행하는 것입니다 기사가 말했듯이 다른 DOM 이벤트에서보기를 분리시킨다 때문에
employeeList: function() {
var c = new EmployeeCollection
$('#content').html(new EmployeeView({collection: c}).render().el);
},
내가 문서 솔루션을 좋아
EmployeeView = Backbone.View.extend({
template:template,
initialize: function() {
this.collection.fetch({
reset: true
});
this.collection.on('reset',this.render, this);
},
render: function(){
this.el.innerHTML = Mustache.to_html(this.template, { employee_list: this.collection.toJSON()});
console.log('render called');
return this;
}
라우터에게 및 내 모든 조정과 맞춤 설정을 한 곳 라우터에 집중할 수있게 해줍니다. 하지만 컬렉션/모델을 전달할 때 내 페이지를 초기화 할 때 데이터를 가져와야하므로 내 페이지가 두 번 렌더링됩니다. 내 질문은 다음과 같습니다.
- 정말 좋은 방법입니까?
- 제안 된 방법을 사용하려면 렌더링을 두 번 호출하지 않는 방법은 무엇입니까?
- 프런트 엔드 사용자 상호 작용이있는 경우 뷰 모음/모델을 새로 고쳐야하는 경우에는 어떻게합니까? 내 견해대로해야 할까? 아니면 라우터에서 그런 일이 일어날 수 있겠는가?