私は様々なチュートリアルやドキュメントを見てきましたが、バックボーンルータを動作させるにはまだ問題があります。私は、OS Xのサイトフォルダ(URLはhttp://localhost/~plebrun
)でコードを実行しています。 http://localhost/~plebrun/#foo
もhttp://localhost/~plebrun/#type/books
もありません。思考?バックボーンルーティングが正常に動作するようにする
(注意:DATA_ *変数はJSONデータを含む)
/****************************/
/********** MODELS **********/
/****************************/
var Category = Backbone.Model.extend();
var Phrase = Backbone.Model.extend();
/****************************/
/******** COLLECTIONS *******/
/****************************/
var Type = Backbone.Collection.extend({
model: Category
});
/****************************/
/********** VIEWS ***********/
/****************************/
var TypeView = Backbone.View.extend({ /* a Type is a list of Categories */
el: $('#categories'),
initialize: function() {
_.bindAll(this, 'render');
this.render();
},
render: function() {
var ul_list = "";
_(this.collection.models).each(function(category) {
ul_list += '<li><a href="/category/' + category.get('id') + '"><h1>' + category.get('en') + '</h1><p>' + category.get('es') + '</p></a></li>';
});
$(this.el).append(ul_list);
}
});
/****************************/
/********* ROUTER ***********/
/****************************/
var AppRouter = Backbone.Router.extend({
routes: {
"/type/:src": "showType",
"/foo": "foo"
},
locate_data: {
"books": data_books,
"conversations": data_conversations,
"phrases": data_phrases
},
initialize: function() {
_.bindAll(this, 'showType');
},
foo: function() {
alert("foo")
},
showType: function(src) {
console.log(src);
var types = new Type(this.locate_data[src]);
new TypeView({ collection: types });
}
});
/****************************/
/********** INIT ************/
/****************************/
var foo = new AppRouter();
Backbone.history.start({pushState: true, root: "/~plebrun/"});
htmlレンダリング用のテンプレートエンジンを調べることをお勧めします。ここでは、バックボーンに付属するアンダースコアテンプレートの機能が十分に役立つはずです。あなたはTypeView.render、 – OlliM
で厄介なコードコードを取り除くことができました。良いアドバイス、そして結局私はHandlebars.jsを使用します - 私はちょうど何かを最初に働かせたいと思っていました。残念ながら、開始スラッシュを削除しても問題は解決しませんでした。 – Pierre
ここで何がうまくいかないのか分かりません。 pushState(サーバーが/〜plebrun/fooを同じページにリダイレクトするかどうかわからない)をテストし、サーバーのルートで実行することをお勧めします。 – OlliM