使用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()中绑定时无法触发路由,请参阅:因此,我无法在创建视图时设置路由器