문제

단일 페이지 앱을 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>
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top