我是SPA的新骨干,我试图通过使用backbone和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]没有方法扩展”。
我想,我试图做到这一点的方式,是远离正确的。
任何人都可以建议如何做到这一点?
感谢
感谢您的回答约翰。这工作! – StrouMfios