3

わかりました、これは単純なことだと思いますが、私はそれを見るのが愚かです。これがバックボーンボイラープレート法を使用したバックボーンのコードです

require([
  "app",

  // Libs
  "jquery",
  "backbone",

  // Modules
  "modules/example"
],

function(app, $, Backbone, Example) {

  // Defining the application router, you can attach sub routers here.
  var Router = Backbone.Router.extend({
    routes: {
      "": "index",
      "item" : 'item'
    },

    index: function() 
    {
      console.info('Index Function');
      var tutorial = new Example.Views.Tutorial();

      // Attach the tutorial to the DOM
      tutorial.$el.appendTo("#main");

      // Render the tutorial.
      tutorial.render();
    },

    item: function()
    {
        console.info('Item View');
    }
  });

  // Treat the jQuery ready function as the entry point to the application.
  // Inside this function, kick-off all initialization, everything up to this
  // point should be definitions.
  $(function() {
    // Define your master router on the application namespace and trigger all
    // navigation from this instance.
    app.router = new Router();

    // Trigger the initial route and enable HTML5 History API support
    Backbone.history.start({ pushState: true, root: '/reel' });
  });

  // All navigation that is relative should be passed through the navigate
  // method, to be processed by the router.  If the link has a data-bypass
  // attribute, bypass the delegation completely.
  $(document).on("click", "a:not([data-bypass])", function(evt) {
    // Get the anchor href and protcol
    var href = $(this).attr("href");
    var protocol = this.protocol + "//";

    // Ensure the protocol is not part of URL, meaning its relative.
    if (href && href.slice(0, protocol.length) !== protocol &&
        href.indexOf("javascript:") !== 0) {
      // Stop the default event to ensure the link will not cause a page
      // refresh.
      evt.preventDefault();

      // `Backbone.history.navigate` is sufficient for all Routers and will
      // trigger the correct events.  The Router's internal `navigate` method
      // calls this anyways.
      Backbone.history.navigate(href, true);
    }
  });

});

これをMAMPサーバーで実行していて、Localhost:8888 / reelと入力すると、ボイラープレートに付属するインデックスページの例が表示されます。ただし、Localhost:8888 / reel / itemまたはLocalhost:8888 / reel /#itemと入力すると、ページが見つからないか、インデックスページに戻ることができません。

私の質問は、私が間違っていることです。htaccessを使用する必要がありますか?これは正しくないようです。バックボーンを使用してこれを並べ替える方法はありますか?これが本当に単純な場合は申し訳ありませんが、頭を悩ませることはできません。

4

1 に答える 1

1

問題は pushState フラグにある可能性があります。

それにより、リクエストはサーバーに到達し、完全なURLを確認して、何をするにしてもそれに応答します...

あなたが持っている場合、それは動作しますか

 $(function (){
       setTimeout(navMe, 2000);
 });
 function navMe() {
      backbone.navigate("item");
 }

そのようにして、ロードの 2 秒後に項目ビューに移動し、リクエストがバックボーンではなくサーバーに送信されるためであることがわかります。

于 2012-07-11T05:42:17.970 に答える