1

我开始关注使用模块组织您的应用程序(require.js教程,但在将第一个事件处理程序添加到我的视图后 - 我遇到了问题:


// Filename: views/project/list
define([
  'jquery',
  'underscore',
  'backbone',
  'handlebars',
  'collections/projects',
  'text!templates/projects/list.js'
], function ($, _, Backbone, Handlebars, ProjectsCollection, projectListTemplate) {
    var ProjectListView = Backbone.View.extend({
        el: $('#container'),
        events: {
            "click .open-proj": "openProject",
        },
        initialize: function () {
          ...
        },
        render: function () {
            ...
        },
        openProject: function(e) {
            // HERE I WANT TO TRIGGER ROUTING VIA router.navigate
            alert("opened");
        }
    });
    // Our module now returns our view
    return ProjectListView;
});

openProject回调中我想触发路由,但我不能向 app.js 引入依赖,因为它会导致循环依赖(路由器依赖于视图)。我该如何处理?

4

1 回答 1

3

您可以ProjectListView在创建路由器时将其传递给:

var projectListView = new ProjectListView({
    router: app_router
});

既然ProjectListView是 a Backbone.View,那么它就可以使用 访问路由器this.options.router,这里没有循环依赖问题。

于 2012-11-27T10:18:12.693 回答