2013-01-26 9 views
13

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}); 
}); 
+0

これはロードスピード/オーダーと関係があり、ログインしたときに読み込みに時間がかかり、appRouterが時間通りに準備できるようになります。 appRouter宣言をMeteor.startupの中に入れてみてください。 – Rahul

+0

このRahulを試しました - うまくいきませんでした – squeezemylime

+0

まだWin8 Metro Appsで作業していないので、ブラウザのような開発用コンソールがあるかどうかわかりません。もしあれば、私は 'BackBone.history.start({pushState:true});'の直前で 'appRouter = new Aphorism;'を呼び出し、appRouteをグローバル変数に代入して、それがまったく初期化されているかどうかを調べます。 – wowpatrick

答えて

1

あなたの問題は、Backbone.jsの問題のようには思えません。

startup()コールバックにconsole.logステートメントを入れて、実際にすべてのケースで呼び出されていることを確認しましたか?そうでなければ、それはあなたと流星の間です。

1

DOMを準備するのを待ってみましたか?例:$(Backbone.history.start)

1

Meteor.start以外のバックボーン履歴の宣言を引き出してみてください。そこにいる理由はありません。また、は、idパラメータを持つルートに行く場合(つまり、http://app/saying/に行くことができない場合)にのみ呼び出されると思います。

また、プログラムでナビゲートしようとしている場合は、ルータを動作させるために手作業でapprouter.navigateを呼び出す必要があります。 (私はあなたがいるかどうかはわかりませんが、問題になる可能性があります)。

それ以外は、この特定のコードでは問題は見つかりません。私が提案したことが何も解決しなければ、問題はどこかにあるかもしれません。

ルータ実装の例としては、https://github.com/Benaiah/Athenaeum/blob/master/client/router.coffee(免責事項:私が書いているのはアプリです)を見て、他の違いを見つけることができます。

希望に役立ちます。

+0

これらの提案を確認します。ありがとう – squeezemylime