我的问题是,当我在链接中使用哈希标记时,它只是将哈希附加到网址而不是去路由。例如/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>
答案 0 :(得分:1)
在Backbone开始监视hashchange事件之前,你需要调用Backbone.history.start()。
app.init = function() {
console.log('start init')
router = new TestRouter();
Backbone.history.start();
console.log('end init')
}
答案 1 :(得分:0)
尝试将$(app.init)
移至app.init
的函数定义下方。您实际上是在传递jQuery.ready(null)
,它不会在DOM上调用您的app.init
函数。
例如,在下面的snippit中,只有“两个”会被警告,因为alerts.one
在传递给jQuery时为null
alerts = {}
$(alerts.one)
alerts.one = function() { alert("one") }
alerts.two = function() { alert("two") }
$(alerts.two)