Backbone和jquerymobile导航问题 - URL中的哈希

时间:2013-03-31 11:58:17

标签: jquery-mobile backbone.js navigation routes

我正在使用backbone.js和WebMatrix。我在url中遇到hash(#)问题。更确切地说,我在路由器文件上有这段代码:

routes: { 
          ""          : 'myBooks', 
          "books/:id" : 'bookDetails'
} 

然后我初始化路由器

var initialization = function () {

        Backbone.history.start();
};

因此,当我在浏览器上单击此URL:“localhost:9548 /#books / 1”时,我的控制台(firebug)上会显示以下消息:“NetworkError:404 Not Found - // localhost:9548 / books / 1 ”。 我已经找到了试图解决类似问题的帖子,但我对IIS Express(一般的服务器配置)一点也不熟悉。所以有些帖子也可以参考我的网络应用程序的web.config,但我没有。

例如,如果我使用以下代码创建web.config文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
<rewrite>
    <rewriteMaps>
        <rewriteMap name="StaticRewrites">
            <add key="index.html#books/*" value="index.html" />
        </rewriteMap>
    </rewriteMaps>
</rewrite>
</system.webServer>
</configuration>

会解决我的问题吗?

我道歉,我没有提到我的网络应用程序的ui(和唯一)的事实,我正在使用jquerymobile。因此,我已禁用jquerymobile的ajax导航:

$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false; 
$.mobile.pushStateEnabled = false;
$.mobile.changePage.defaults.changeHash = false;

此页面的更改由此代码处理:

var utility = {}; 
utility.changePage = function( viewID, effect, direction, updateHash ) {
   viewID.attr('data-role', 'page');
   $.mobile.changePage( viewID,{changeHash: updateHash}); 
};

最后处理我的路线的功能如下:

bookDetail: function (id) { 
   var myBook = myCollection.get(id); 
   var bookDetails = new BookDetails({ model: myBook });
   $('body').append($(bookDetails.render().el));
   $.mobile.changePage(bookDetails.$el, {changeHash: false }); 
}

重要提示:由于jquerymobile(1.3.0)的最新版本,可能会出现问题。确切地说,禁用hashListeningEnabled并不像我读过的那样正常工作。 另一个功能是我遇到了Mozilla和Chrome的这个问题,但没有使用Internet Explorer(使用它们的最新版本)。

0 个答案:

没有答案