backbone.js 렌더링을 봅니다. 그러나 페이지에 표시되지 않습니다
-
10-12-2019 - |
문제
단일 페이지 앱을 backbone.js로 변환하기 위해 작업 중입니다.아래보기 아래에서 본문 태그를 TagName으로 사용합니다. 즉,보기가 페이지의 전체 내용을 차지할 것을 원합니다.나는 컨테이너 Divs 또는 다른 해킹을 사용하고 싶지 않습니다.
var ThingView = Backbone.View.extend({
tagName : "body",
...
// Show the HTML for the view
render : function() {
console.log('Displaying thing')
$(this.el).append('<h1>test</h1>');
console.log('finished')
console.log($(this.el))
return this; // For chaining
.
렌더링 할 때,
finished
[
<body>
<h1>test</h1>
</body>
]
.
그러나 DOM을 검사 한 후에 몸이 더 이상 텍스트가 없습니다.
해결책
tagName
생성자가 EL이 제공되지 않는 경우의 EL을 생성하는 데 필요한 태그 백본을 나타냅니다.생성 된 요소가 자동으로 DOM에 삽입되지 않습니다.
가장 간단한 방법은 EL 세트로 body
로보기를 만들어야합니다.
new ThingView({el:'body'})
. 다른 팁
Nikoshr 설명이 정확합니다.TagName을 사용하여 추가하려면 올바른다.그러나 이상적으로는 Backbone.js 라이브러리에서보기의 요소 (EL)로 정의 된 EL 요소를 사용해야합니다.
아래에서 사용하는 동안 사용해야하는 이상적인 코드입니다.
<script type="text/javascript">
$(document).ready(function(){
var ThingView = Backbone.View.extend({
el:$("body"),
initialize: function(){
_.bindAll(this,"render");
this.render();
},
render:function(){
this.el.append('<h1>test</h1>');
console.log('finished');
console.log($(this.el).html());
}
});
var ThingView = new ThingView();
});
</script>
. 제휴하지 않습니다 StackOverflow