2012-02-06 2 views
0

Я не могу получить вкладки jquery для визуализации и взаимодействия правильно. Ниже приведены соответствующие фрагменты кода; кто-нибудь видит, что может быть неправильным?jQuery Вкладки в Backbone View

Как вы увидите ниже, в моем представлении позвоночника я добавляю шаблон (jQuery tab) в div (вид el), а затем визуализует этот div.

Шаблон:

<div id="tab-set"> 
    <ul> 
     <li><a href="#panel1">Details</a></li> 
     <li><a href="#panel2">Images</a></li> 
     <li><a href="#panel3">Appendix</a></li> 
    </ul> 
    <div id="panel1">...</div> 
    <div id="panel2">...</div> 
    <div id="panel3">...</div> 
</div> 

Магистральных Посмотреть

App.Views.IndexView = Backbone.View.extend({ 

    tagName: 'div', 

    id: 'user-content', 

    template: JST['users/index'], 

    ... 

    render: function(){ 
     var view = this; 

     $(this.el).html(this.template({user: this.model})); 
     this.$('#date').datepicker(); 
     this.$('#tab-set').tabs(); 

     return this; 
    } 
}); 
+0

У вас возникли ошибки в консоли вашего браузера? –

+0

Что вы имеете в виду: «Я не могу получить вкладки jquery для визуализации и правильного взаимодействия». У вас есть ошибки? Что вы ожидаете иметь и что у вас на самом деле? –

+0

@GrahamClark: Нет, ошибок в консоли моего браузера нет. – Dan

ответ

1

Вы пишете:

«в моем магистральном зрении добавить (вкладку JQuery) шаблон к DIV (вид в эл) а затем визуализируйте этот div ».

Но это не совсем правильно. В коде создается представление для DIV с идентификатором «пользователь-контент»:

App.Views.IndexView = Backbone.View.extend({ 

    tagName: 'div', 

    id: 'user-content' 

    [...] 

, и я не могу видеть DIV с «user-content» ид в вашем html коде. Может быть, это где-то еще, и вы не показывали его в вырезанном/вставленном коде?

Вы можете объявить вид, в котором div или id не существуют в HTML коде, но тогда вы должны объявить вид, который в иерархии (обычно AppView), где вы динамически создать IndexView и добавить его к существующему элементу делать что-то вроде:

window.AppView = Backbone.View.extend({ 
    [...] 
    render: function (item) { 
     var myView = new IndexView({ model: item }); 
     this.el.append(view.render().el); 
    } 

ссылка на stackoverflow может иметь некоторую помощь, может быть.

надеюсь, что это поможет.

+0

Вы правы, div 'user-content' делает ** NOT ** ранее существовал в любом HTML-коде, но скорее это' el' рассматриваемого представления. Я добавляю div 'i_.ee' 'user-content' на целевой узел в маршрутизаторе, используя' $ ('target-node'). Append (view.render(). El) '. Я не включил этот фрагмент в мой OP, так как не думал, что он добавил значение/ясность в вопрос. – Dan

+0

ОК. Итак, если я правильно понял, вы можете отображать представление, но оно не отображается на экране, как вы хотите, т. Е. «Заголовки табуляции отображаются в вертикальном списке, а не в горизонтальных вкладках», как вы сказали в своем предыдущий комментарий, не так ли? –

+0

Правильно, но проблема, похоже, не связана с CSS. Я удалил все файлы CSS, кроме тех, которые связаны с jquery, и проблема сохраняется. Вот макет того, чего я пытаюсь достичь: http://jsfiddle.net/BSgwf/2/ – Dan