我是 SPA 的新手,我正在尝试通过使用主干和 requireJs 来开发一个小型应用程序。
我面临的问题是我无法通过传递集合来扩展视图。
嗯,这是名为MenuView.js的视图
define([
'Backbone'
], function (Backbone) {
var MenuView = Backbone.View.extend({
tagName: 'ul',
render: function () {
_(this.collection).each(function (item) {
this.$el.append(new MenuListView({ model: item }).render().el);
}, this);
return this;
}
});
return new MenuView;
});
这是出现错误的router.js
define([
'Underscore',
'Backbone',
'views/menu/menuView',
'views/createNew/createNew',
'collections/menu/menuCollection',
], function (_, Backbone, MenuView, CreateNewView,Menucollection) {
var AppRouter = Backbone.Router.extend({
routes: {
'index': 'index',
'action/:Create': 'Create'
},
index: function () {
CreateNewView.clear();
//----------- HERE IS THE PROBLEM ------------
$('#menu').html(MenuView({ collection: Menucollection.models }).render().el);
},
Create: function () {
CreateNewView.render();
}
});
var initialize = function () {
var appRouter = new AppRouter();
Backbone.history.start();
appRouter.navigate('index', { trigger: true });
};
return {
initialize: initialize
};
});
错误消息是“对象不是函数”。我同意这一点,因为 MenuView 不是一个函数。我试图扩展 MenuView (MenuView.extend({collection:Menucollection.models})) 并且错误消息是“objet [object,object] has no method extend”。
我想我试图做到这一点的方式与正确的方式相去甚远。
谁能建议如何做到这一点?
谢谢