1

我很难从我的主视图实例中“绑定”我的路由器事件。我的第一个想法是因为路由器只会触发我的Depths收藏。我将如何正确通知我viewpoint.js有关页面更改的信息?

路由器.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

}());

观点.js

var depth = depth || {};

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

    depth.Viewpoint = Backbone.View.extend({ 

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

        // Bind relevant triggers
        initialize: function() {

        },

    });

});
4

1 回答 1

0

您需要将集合中的更改绑定到您的视图。这意味着每当您想要更新您的收藏的视图时,也会发生这种情况。

例如:

var list = new ModelList();

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

我们有两个视图链接到同一个收集模型: 现在我们绑定到收集事件:

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);
    }

每当获取(重置)集合时,添加(添加)或删除(删除)项目时,将在您的视图上调用渲染方法

于 2013-02-13T08:22:30.503 回答