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はであるためBackbone.View、を使用してルーターにアクセスできますthis.options.router。ここでは循環依存の問題はありません。

于 2012-11-27T10:18:12.693 に答える