根问题: 单击超链接时,骨干路由不会触发。相反,我得到404,因为没有调用骨干路由,而是有服务器发送请求。
这是html(“testLink”)中的链接:
<script id="header1" type="text/template">
<table id="headerTable">
<tr>
<td id="headerCol1"><button id="playlistBtn"><div class="glyphicon glyphicon-music crimson"></div></button><span id="numberOfSongs" class="badge badge-notify crimson"></span></td>
<td id="headerCol2"></td>
<td id="headerCol3" align="right">
<div id="dropDownMenu" class="dropdown" data-theme="b">
<button id="menuButton" class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown"><p><span id="currentUser" class="crimson"></span><span class="caret crimson"></span></p></button>
<ul class="dropdown-menu dropdown-menu-right" data-theme="b">
<li id="testBtn"><a href="testLink">Test Link</a></li>
</ul>
</div>
</td>
</tr>
</table>
我尝试了很多变种,包括:
href =“#testLink”,导致没有网址更新,没有发生任何事情
href =“#/ testLink”,同上,没有发生任何事情
href =“/#/ testLink”,同上,没有发生任何事情
href =“/ testLink”,导致404向服务器发送请求
href =“testLink”,与上面相同,404发送请求到服务器(这是我的第一选择)
这是我的路由器代码:
var AppRouter = Backbone.Router.extend({
routes: {
"Profile": "profilePage",
"testLink": "test"
},
profilePage:function(){
alert('You have navigated to the profile page');
},
test:function(){
alert('testing this link');
}
});
// Instantiate the router and start the history
var appRouter = new AppRouter();
Backbone.history.start();
我尝试过将pushState设置为true,并将root选项设置为'/'而不改变行为的变体。