다른 모델의 컬렉션이 포함 된 백본 모델 (Library
)을 만들려고합니다 (Books
이라고 할 수 있음). 나는 BookView
에 의해 생성 된 HTML에 의해 표현 된 일련의 서적과 함께 책 케이스의 HTML을 생성하는보기 -을 제공하고있다. 또한, 나는 내 템플릿 시스템으로 Handlebars.js를 사용하고 있습니다.백본 중첩 된보기 - 템플릿에 자식보기 특성이 잘못 설정되었습니다.
내가 겪고있는 문제는 BookView
이 render()
함수를 전달하기 전에 this.el 요소에서 이상한 html을 반환한다는 것입니다.
LibraryModel 모델
var LibraryModel = Backbone.Model.extend({
initialize: function() {
var books = new BookCollection();
_.each(book_data.books, function(value, index) {
books.add(new Book());
});
this.books = books;
}
});
LibraryView보기 :
var LibraryView = Backbone.View.extend({
el: "#library",
render: function() {
var t = this;
this.model.books.each(function(book, index) {
//create new view for each Book model in the books collection
var view = new BookView(book);
//append HTML produced by the BookView into LibraryView el element
t.$el.append(view.render().$el);
});
return this;
},
initialize: function() {
//snip
}
});
BookView보기 :
var BookView = Backbone.View.extend({
render: function() {
var viewmodel = this.model;
var source = $("#book-template").html();
var template = Handlebars.compile(source);
var html = template(viewmodel.toJSON());
console.log(html); //prints <div test="wtf" anotherTest="123"><b>wtf</b> 123</div>
this.$el.html(html);
return this;
},
initialize: function(book) {
console.log(this.el.outerHTML); //prints <div test="wtf" anotherTest="123"></div>
this.model = book;
this.listenTo(this.model, "change", this.render);
}
});
테 내가 제공하고 mplate은 다음과 같습니다 <b>{{test}}</b> {{anotherTest}}
BookModel 모델
var BookModel = Backbone.Model.extend({
defaults: {
test: "wtf",
anotherTest: 123
},
initialize: function() {
//snip
}
});
기본적으로, 나는 exeperiencing하고있는 문제는 내 BookView
내 모델의 각은 백본 생성 div
에 연결된 속성 이상한 HTML을 생성하는 것입니다 , 이렇게 :
<div test="wtf" anotherTest="123">
<b>wtf</b> 123
</div>
코드의 다른 곳에서는 속성을 설정하지 않습니다. 두 값 모두 com입니다. 기본 설정과 다릅니다.
또한, 나는 백본에 HTML-부가 요소가 BookView
모델의 div
을 (주, 나는 수동 태그 이름 또는 엘을 제공하고 있지 않다 생성 된 모델 속성이 삽입 될이, 핸들 바이하고있는 일이 아닙니다 확인, 나는 백본을 원하는 나를 위해 div 만들기).
그래서 여기에 내가 붙어 있습니다. 나는 목록에 내 모델의 각 BookView
에 의해 생성 된 HTML의 완벽하게 작업 목록을 가지고 있지만, 어떤 이유로 백본 생성 DIV 래퍼과 같이 그 HTML-속성에서 모델의 각 속성이 포함되어
<div id="#library">
<div test="wtf" anotherTest="123"><b>wtf</b> 123</div>
<div test="wtf" anotherTest="123"><b>wtf</b> 123</div>
<div test="wtf" anotherTest="123"><b>wtf</b> 123</div>
</div>
나는 이것을 통해 내 머리카락을 정말로 끌어 내고 있으며 View-in-a-View를 사용하려고한다는 사실과 관련이 있다는 의혹을 가지고 있습니다.
이전에 비슷한 문제가 발생 했습니까? MasterView가 ChildView 컬렉션을 렌더링하는 백본 어플리케이션의 좋은 예가 있습니까?
예, 필름은 오타였습니다. 고마워요! 실제로 제가 놓친 것은 {model : book}이었고 모델을 뷰에 직접 전달하지 않았습니다. – rochal