Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用require.js构建backbone.js应用程序_Backbone.js_Requirejs - Fatal编程技术网

使用require.js构建backbone.js应用程序

使用require.js构建backbone.js应用程序,backbone.js,requirejs,Backbone.js,Requirejs,我开始学习以下教程,但在将第一个事件处理程序添加到视图中后,我遇到了问题: // Filename: views/project/list define([ 'jquery', 'underscore', 'backbone', 'handlebars', 'collections/projects', 'text!templates/projects/list.js' ], function ($, _, Backbone, Handlebars, ProjectsC

我开始学习以下教程,但在将第一个事件处理程序添加到视图中后,我遇到了问题:


// 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,因为它会导致循环依赖关系(路由器取决于视图)。如何处理此问题?

创建路由器时,您可以将路由器传递到
项目列表视图

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

由于
ProjectListView
是一个
主干.View
,因此它可以使用
this.options.router
,访问路由器,这里没有循环依赖性问题。

是的,它可能会工作,但我在extend()中使用了define routing callbacks,而不是在initialize()中使用了define routing callbacks,我不太清楚,您可以从
openProject
中访问
this.options.router
,在initialize()中绑定时无法触发路由,请参阅:因此,我无法在创建视图时设置路由器