骨干路由和#

时间:2015-05-05 09:38:30

标签: javascript backbone.js url-routing

我在主干和路由方面遇到了一些问题。

以下是代码:

    //routing
    var AppRouter = Backbone.Router.extend({
        routes: {
            "":"home",
            "example": "example",
            "example/:data": "example_data"
        },
        home: function(){
            alert('home');
        },
        example: function(){
            alert('example');
        },
        example_data: function(data){
            alert('example '+data);
        }
    });

    var app_router = new AppRouter();
    //Backbone.history.start({pushState: true});
    Backbone.history.start();

现在,如果我去根网址:

file:///Users/my_user/workspace/project/index.html

我可以看到警报' home'。 如果我将网址更改为

file:///Users/my_user/workspace/project/index.html#example

我可以看到警告'示例',如果我将网址更改为:

file:///Users/my_user/workspace/project/index.html#example/something

我可以看到警告'示例'。

现在我有两个问题:第一个是我真的很感谢删除'#'符号和使用' /'代替。第二个问题是如果我退出这行代码:

    //Backbone.history.start({pushState: true});

警报不再起作用。我怎么解决这个问题?

这是项目的完整代码:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <title>App</title>
    </head>
    <body>
        <div id='test-routing'><a href='#example'>example</a></div>
        <div id='test-view'></div>

        <script src="lib/jquery-2.1.3.min.js"></script>
        <script src="lib/underscore-min.js"></script>
        <script src="lib/backbone-min.js"></script>
        <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.26.min.js"></script>

        <script>

        //routing
        var AppRouter = Backbone.Router.extend({
            routes: {
                "":"home",
                "example": "example",
                "example/:data": "example_data"
            },
            home: function(){
                alert('home');
            },
            example: function(){
                alert('example');
            },
            example_data: function(data){
                alert('example '+data);
            }
        });

        var app_router = new AppRouter();
        Backbone.history.start({pushState: true});
        //Backbone.history.start();

        </script>
    </body>
</html>

0 个答案:

没有答案