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>

所以我有一个单独的 js 文件,其中包含文件 test.js 中的 javascript 代码。这是主要代码

$(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. 您实际上是在传递jQuery.ready(null),它不会app.init在 DOM 就绪时调用您的函数。

例如,在下面的代码片段中,只有 'two' 会被提醒,因为它alerts.onenull在传递给 jQuery 时

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 回答