backbone.js 路由 模版 使用示例

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>

    </title>
    <link rel="stylesheet" href="css/master.css" type="text/css" media="screen" />
    <script type="text/javascript" src="js/lib/jquery.js"></script>
    <script type="text/javascript" src="js/lib/underscore.js"></script>
    <script type="text/javascript" src="js/lib/backbone.js"></script>  
</head>
<body>
    <a href="#/view/120">view/120</a>
    <a href="#/list/1/20">list 第一页</a>
    <a href="#/user/login/returnUrl=www.ujinbi.com/a/b">login</a>
    <a href="#/a/v/v/css/ss">不存在的页</a>
    <div id="container">容器1</div>

    <hr />
    <div id="container2">容器2</div>

    <script>
        (function ($) {
            _.templateSettings = {
                // JavaScript可执行代码的界定符
                evaluate: /\{\{([\s\S]+?)\}\}/g,
                // 直接输出变量的界定符
                interpolate: /\{\{=([\s\S]+?)\}\}/g,
                // 需要将HTML输出为字符串(将特殊符号转换为字符串形式)的界定符
                escape: /\{\{-([\s\S]+?)\}\}/g
            };

            //Backbone中的router,见名知意,router有路由的意思,显然这里是要控制url的。
            //Backbone.Router会把你连接中的#标签当做是url路径
            //从上面已经可以看到匹配#标签之后内容的方法,有两种:一种是用“:”来把#后面的对应的位置作为参数;还有一种是“*”,它可以匹配所有的url,下面再来演练一下。
            var AppRouter = Backbone.Router.extend({
                routes: {
                    "/view/:id": "view",
                    "/list/:pageIndex/:pageSize": "list",
                    "/:route/:action/returnUrl=*path": "loadView",
                    "*actions": "defaultRoute"
                },
                view: function (id) {
                    //tmp = _.template($("#hello-template").html(), { id: id });
                    //$("#container").html(tmp);
                    //alert(tmp);


                    var t = _.template($("#t1").text());
                    $("#container").html(t({ text: "view:" + id }));
                },
                defaultRoute: function (actions) {
                    var t = _.template($("#t1").text());
                    $("#container").html(t({ text: "defaultRoute:" + actions }));
                },
                list: function (pageIndex, pageSize) {
                    var t = _.template($("#t1").text());
                    $("#container").html(t({ text: "list:" + pageIndex + "," + pageSize }));
                },
                loadView: function (route, action, path) {
                    var t = _.template($("#t1").text());
                    $("#container").html(t({ text: "loadView" + route + "." + action + " ,path:" + path }));
                }
            });

            var app_router = new AppRouter;

            Backbone.history.start();
        })(jQuery);
    </script>

    <script>

        $(function () {
            var data = [{ name: 'car1' }, { name: 'car2' }, { name: 'car3' }];
            var t = _.template($("#t2").text());
            $("#container2").html(t({ title: "循环示例:", cars: data }));
        });
    </script>
    <script type="text/template" id="t2">
        {{=title}}
        <br />
        {{ _.each(cars, function(car) { }}
        <li>{{=car.name}}</li>
        {{ });}}
    </script>

    <script type="text/template" id="t1">
        {{=text}}
    </script>
</body>
</html>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值