私はバックボーンを備えた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]にはメソッドextendがありません」でした。
私がこれをやろうとしている方法は、正しい方法とはかけ離れていると思います。
誰かがこれを行う方法を提案できますか?
ありがとう