2013-09-18 3 views
0

Это небольшой peice кода в моей index.html:RESTful URL с Backbone необходимой помощи с URL перенаправления

<a href="#driver.html"><button type="button" 
class="btn btn-default btn-large active style="border-right-color: white">Drivers</button></a> 

мои router.js я включил вид

routes: { 
    '': 'defaultAction', 
    'drivers':'driver' 

} 

driver:function(){ 
console.log("Drivers"); 
var addview = new AddDriverView({el: $("#content")}); 

// Я хочу загрузить представление в свой контент, поэтому #content addview.render();

);}

Выход в консоли драйверов. Теперь я хочу, чтобы функция драйвера загружала представление. как ?

Update Мое мнение я дал в

 var AddDriverView = Backbone.View.extend({ 
       el: '#addDriver', // addDriver is the id of the form of the view i have created as view.adddriver.htm(it comtains only the form and nothing else.) 

       events: { 
        'submit': 'submit' 
       }, 
       ***render: function() { 
        $(this.el).html();  
       },*** 

       submit: function(e) { 
// some code 
} 
}); 

является функция визуализации правильно ?? все, что я пытаюсь, чтобы оказать форму ...

@kunerd

+0

отсутствует один "за последний класс (активной) – supertopi

ответ

1

Есть много ресурсов в Интернете о том, как создать экземпляр представления Backbone.

Пожалуйста, прочитайте это: What is a view?

А затем посмотреть на соответствующий jsFiddle

EDIT: Как я могу видеть до сих пор, ваша проблема в том, что вы не вызываете ваши взгляды render() метода в любом месте. Вы можете вызвать его после инициализации в своем маршрутизаторе, или вы можете вызвать его в методах initialize.

в контроллере:

AppRouter = Backbone.Route.extend({ 
    ... 
    driver:function(){ 
    console.log("Drivers"); 
    var addview = new AddDriverView({el: $("#content")}); 
    addView.render(); 
    } 
    ... 
}); 

или в виде:

AddDriverView = Backbone.View.extend({ 
    initialize: function() { 
    this.render(); 
    } 
}); 

EDIT: объяснение функции драйвера маршрутизаторов: new AddDriverView({el: $("#content")}); создает новый экземпляр вашего класса AddDriverView. Свойство el привязывает этот вид к существующему элементу DOM с идентификатором content. Если вы не укажете, что одна базовая линия всегда будет создавать элемент DIV. Вызов метода addView.render() сообщает вашему новому создаваемому представлению, чтобы отобразить его содержимое в DOM, и там в элементе с идентификатором content. За дополнительной информацией просьба обращаться по адресу Backbone's Documentation.

Также вам необходимо указать ваш контент #addDriver в качестве шаблона на ваш взгляд.

render: function(){ 
    var template = _.template($("#search_template").html(),{}); 
    this.$el.html(template); 
} 

Этот jsFiddle должен вам помочь. Вот еще информация о underscore templates, потому что она используется выше.

Но есть много способов создания представлений и способов использования маршрутизатора. Для получения дополнительной информации см. Это question and answer.

+0

вар addview = новый AddDriverView ({эш: $ (" # содержание ")}); addview.render(); вы можете объяснить, что эти две строчки в моей router будет делать всякий раз, когда я запускаю проект, браузер показывает ошибку только в первой строке. не могли бы вы объяснить первую строчку четко. Возможно, я делаю небольшую ошибку – seshan

+0

это правильно ???? i я создаю объект addview типа вида AddDriverView .. как только браузер увидит AddDriverView, он перейдет к представлению и выполнит его и вернется и увидит, что это нужно поместить в идентификатор «content» ... и когда он см. addview.render, который выводит результат. – seshan

+0

Отредактировано m y, чтобы ответить на ваши дополнительные вопросы. – kunerd

Смежные вопросы