2013-02-12 3 views
1

Мне нелегко «привязка» событий моего маршрутизатора из моего основного экземпляра представления. Мои первые мысли связаны с тем, что маршрутизатор запускает только мою коллекцию Depths. Как я могу уведомить viewpoint.js об изменении страницы?Событие связывания маршрутизатора с основного экземпляра представления

router.js

var depth = depth || {}; 

(function() { 
    'use strict'; 

    var DepthRouter = Backbone.Router.extend({ 

    routes: { 
     '*page' : 'setPage' 
    }, 

    setPage: function(page) { 
     // Set the current page 
     page = page.trim() || 'home'; 

     // Trigger a collection {page} event 
     depth.Depths.trigger(page); 

    } 

}); 

... // instance creation and Backbone.history.start() stuff 

}()); 

viewpoint.js

var depth = depth || {}; 

$(function($) { 
    'use strict'; 

    depth.Viewpoint = Backbone.View.extend({ 

     el: 'section#right > div.content', 

     // Bind relevant triggers 
     initialize: function() { 

     }, 

    }); 

}); 

ответ

0

Вы должны связать изменения в вашей коллекции на ваш взгляд. Это означает, что всякий раз, когда вы хотите обновить представление своей коллекции, это также происходит.

Например:

var list = new ModelList(); 

var listView = new ModelView1({model: list});  
var counterView = new ModelView2({model: list}); 

Мы два вид связаны с одной и той же модели colleciton: Теперь мы привязываем к событиям коллекции:

ModelView1 = Backbone.View.extend({ 

    initialize : function() { 

     this.model.bind('add', this.render); 
     this.model.bind('remove', this.render); 
     this.model.bind('reset', this.render); 
    } 

ModelView2 = Backbone.View.extend({ 

    initialize : function() { 

     this.model.bind('add', this.render); 
     this.model.bind('remove', this.render); 
     this.model.bind('reset', this.render); 
    } 

Всякий раз, когда коллекция забирается (сброс) элемент добавляется (добавить) или удален (удалить) метод визуализации будет вызываться на Ваше мнение (и)

+0

Что делать, если моя коллекция еще не изменилась? Я хочу, чтобы мое представление изменилось при изменении моего маршрутизатора? Разве это невозможно? – Penner

+0

Конечно, вы можете вручную вызвать событие рендеринга представления. Это можно сделать, например, через глобальное событие, на которое вы привязываете свое представление. – Drejc