我有一个requirejs和backbone的问题。 那么,我有两个视图(View1和View2)。我想从View1调用View2.render(),并从View2调用View1.render()。一般来说,我希望每个视图都依赖于另一个视图。RequireJs - Backbone.Views互相依赖
我的问题是我无法调用View2.render()。我收到错误消息“不能调用方法呈现未定义”
如果我从View2删除View1依赖项,那么它将工作。
有谁知道我该如何修改代码才能正常工作?
编辑
视图名称 - >视图2
define([
'Underscore',
'Backbone',
'Handlebar',
'views/view1'
], function (_, Backbone, Handlebars, View1) {
var View2 = Backbone.View.extend({
initialize: function() {
_.bindAll(this, "render");
},
tagName: 'div',
el: '#rightPanel',
events: {
'change input#createNewCategory': 'createNewItem',
'click #saveEdits': 'saveData',
'click #clearEdits': 'render'
},
render: function() {
//do something here
},
clear: function() {
this.$el.empty();
},
createNewItem: function (e) {
//so something here
},
saveData: function() {
//This works Fine
View1.render();
}
});
return new View2;
});
视图名称 - >视图1
define([
'Underscore',
'Backbone',
'Handlebar',
'views/view2'
], function (_, Backbone, Handlebars, View2) {
var View1 = Backbone.View.extend({
tagName: 'li',
el: '#categoriesList',
events: {
'click .categoryItem': 'edit'
},
initialize: function() {
_.bindAll(this, "render");
},
edit: function (e) {
View2.render();
//**ERROR (cannot call method render of undefined)**
},
render: function() {
//do something here
}
});
return new View1;
});
感谢
都是那些在require.js的URL根目录中的视图?或者使用require Path var映射它们? –
我通过传递路径来映射它们。 define([model/View1],function(View1){}) – StrouMfios
代码是否完整?因为它看起来很奇怪?新的Backbone.View.extend在哪里? Define之后的功能在哪里?你能用更详细的代码更新吗? –