2

私の問題は、リンクでハッシュタグを使用すると、ルートに移動するのではなく、ハッシュを URL に添付するだけであるということです。たとえば/ToDo/public/offline2.html#test。を離れると、tag = ""何らかの理由でルーターに移動します。

次のコードでjqueryモバイルルーターをオフにしました

<script type="text/javascript">     
  $(document).bind("mobileinit", function () {  
      $.mobile.ajaxEnabled = false;         
      $.mobile.linkBindingEnabled = false;  
      $.mobile.hashListeningEnabled = false;    
      $.mobile.pushStateEnabled = false;        
      $.mobile.changePage.defaults.changeHash = false;
  });

</script>

<script src="../js/jquery.mobile.js"></script>
<script src="../js/jquery.js"></script>

私のhtmlコードは非常に基本的です

<p>go to <a href="#test"  id="#test">test page</a></p>

したがって、たとえばファイルtest.jsにjavascriptコードを含む別のjsファイルがあります。これがメインコードです

$(app.init)

app.init = function() {
  console.log('start init')

  router = new TestRouter();    
  console.log('end init')
}


var TestRouter = Backbone.Router.extend({           
    routes:{       
        "":"home",  
        "test":"test" 
       },   

          initialize: function(){     var self = this
              _.bindAll(self)       },  
          home: function(){         
              alert(name);  
             // $.mobile.changePage($('#home-page'), {changeHash:false});   
              },        

              test: function (name) {   
                  alert(name);          
                //  $.mobile.changePage($('#test-page'), {changeHash:false});   
                  }     
              })    

私が言ったように、コードは家庭用に機能します。このようにタグを設定すると

<a href="" data-icon="home">Home</a>
4

2 に答える 2

2

Backbone が hashchange イベントの監視を開始する前に、Backbone.history.start() を呼び出す必要があります。

app.init = function() {
  console.log('start init')

  router = new TestRouter();
  Backbone.history.start();
  console.log('end init')
}
于 2012-10-27T17:13:07.893 に答える
0

$(app.init)の関数定義の下に移動してみてくださいapp.init。あなたは基本的に、DOM Readyで関数をjQuery.ready(null)呼び出さないものを渡しています。app.init

たとえば、以下のスニピットでは、jQuery に渡されるときにalerts.one「 2」だけがアラートされます。null

alerts = {}

$(alerts.one)

alerts.one = function() { alert("one") }
alerts.two = function() { alert("two") }

$(alerts.two)

http://api.jquery.com/ready/

于 2012-10-27T17:12:59.040 に答える