0

Select2을 사용하여 선택 입력을 렌더링해야하는 백본보기가 있습니다.select2 내 백본보기의 렌더링 방법

Select2Cell = Backbone.View.extend({ 

    tagName: "select", 

    initialize: function(options) { 
     this.data = options.data; 
    }, 

    render: function() { 
     this.$el.select2({data: this.data}); 
     return this; 
    } 
}); 

내가 다른보기의 render() 안쪽이보기를 렌더링 해요 :

CellsContainerView = Backbone.View.extend({ 
    render: function() { 
     var view = new Select2Cell({data: [{id: 1, text: "Item 1"}]}); 
     this.$el.append(view.render().$el); 
     return this; 
    } 
}); 

문제는, 내가 CellsContainerView을 렌더링 할 때, 그것은 선택 2를 표시하지 않습니다.

$(document).ready(function() { 
    var containerView = new CellsContainerView({el: "#container"}); 
    containerView.render(); 
}); 
+1

이후 오타를 편집하면 코드가 상자 밖으로 나옵니다. 실제 문제를 해결해야 도움이됩니다. 어떤 버전의 밑줄, jquery, 백본, select2를 사용하고 있습니까? –

답변

0

이 답변은 OP 코드가 입력하기 전에 작성되었습니다.

Select2 data은의 배열 일 필요가 있습니다.

[id: 1, text: "Item 1"] 

그래서 선택보기에 전달 된 옵션을 변경해야합니다 : 여기

{ data: [{ id: 1, text: "Item 1" }]} 

이 수정 프로그램 코드의 데모입니다 당신이 누락 된 괄호 {}주의, 잘못된 배열을 전달하는 :

var Select2Cell = Backbone.View.extend({ 
 
    tagName: "select", 
 

 
    initialize: function(options) { 
 
    this.data = options.data; 
 
    }, 
 

 
    render: function() { 
 
    this.$el.select2({ 
 
     data: this.data 
 
    }); // there was also a missing closing brace here 
 
    return this; 
 
    } 
 
}); 
 

 
var CellsContainerView = Backbone.View.extend({ 
 
    render: function() { 
 
    var view = new Select2Cell({ 
 
     data: [{ 
 
     id: 1, 
 
     text: "Item 1" 
 
     }] 
 
    }); 
 
    this.$el.append(view.render().el); 
 
    return this; 
 
    } 
 
}); 
 

 
var containerView = new CellsContainerView({ 
 
    el: "#container" 
 
}); 
 
containerView.render();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script> 
 

 
<div id="container"></div>

+0

내 나쁜 ID는 {}를 넣지 않았지만 코드에서 select2에 객체 배열을 전달하고 있습니다. 여전히 작동하지 않습니다. –

+0

@MuhammadArsal이 내 실행 가능한 스 니펫을보고 작동하므로 참조로 사용하십시오. 귀하의 코드에서 작동하지 않는 것을 찾으십시오. –

관련 문제