13

私のMeteorアプリでは、バックボーンルーターは、ユーザーが(accounts-baseパッケージを介して)ログインしている場合にのみ機能します。おかしいです。このルーター自体は正常に動作します。ユーザーがログインしていないときは、showSaying()関数はまったく呼び出されていません。

以下は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});
});
4

3 に答える 3

1

あなたの問題は Backbone.js の問題ではないようです。

console.log ステートメントをstartup()コールバック内に配置して、すべての場合に実際に呼び出されていることを確認しましたか? そうでない場合、それはあなたと Meteor の間の問題です。

于 2013-02-04T01:05:04.687 に答える
1

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

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

それ以外には、この特定のコードに問題は見つかりません。私が提案したものが解決しない場合、問題は別の場所にある可能性があります。

機能するルーターの実装例については、https ://github.com/Benaiah/Athenaeum/blob/master/client/router.coffee (免責事項: これは私が書いているアプリからのものです) を見て、見つけてみてください。その他の違い。

それが役立つことを願っています。

于 2013-04-09T08:32:52.047 に答える
1

DOM の準備が整うのを待ってみましたか? 例えば:$( Backbone.history.start )

于 2013-02-05T12:05:21.867 に答える