Meteorアプリケーションでは、バックボーンルータは、ユーザが(アカウントベースのパッケージを介して)ログインしているときにのみ動作します。おかしいです。このルータ自体は正常に動作します。ユーザーがログインしていないときには、showSaying()
関数はまったく呼び出されていません。Meteor app - バックボーンルータが呼び出されない
以下は、クライアントフォルダ内のclient.js
のコードです。セッションや自動公開で何かをする必要がありますか?
AphorismView = Backbone.View.extend({
el: "#aphorism-item",
initialize: function(){
_.bindAll(this, "render");
this.render();
},
render: function() {
this.$el.append("<p style='height:600px; background-color:blue;'>hi</p>");
}
});
// Creates a route to view the selected aphorism
var Aphorism = Backbone.Router.extend({
routes: {
"saying/:id": "showSaying"
},
showSaying: function (id) {
var aphorism_view = new AphorismView();
alert('Saying id ' + id + '.');
}
});
//establishes the router
appRouter = new Aphorism;
//Sets up backbone
Meteor.startup(function() {
filepicker.setKey("AerIOvsmAQRGaNdEv0judz");
filepicker.constructWidget(document.getElementById('attachment'));
Backbone.history.start({pushState: true});
});
これはロードスピード/オーダーと関係があり、ログインしたときに読み込みに時間がかかり、appRouterが時間通りに準備できるようになります。 appRouter宣言をMeteor.startupの中に入れてみてください。 – Rahul
このRahulを試しました - うまくいきませんでした – squeezemylime
まだWin8 Metro Appsで作業していないので、ブラウザのような開発用コンソールがあるかどうかわかりません。もしあれば、私は 'BackBone.history.start({pushState:true});'の直前で 'appRouter = new Aphorism;'を呼び出し、appRouteをグローバル変数に代入して、それがまったく初期化されているかどうかを調べます。 – wowpatrick