繁体   English   中英

要在模板上获取骨干JSON集合

[英]Backbone JSON collection to be fetched on template

我只是在写一个简单的骨干程序。 但是我不确定将JSON数据推送到下划线模板时我在做什么错。 任何帮助表示赞赏。

我的代码如下所示:

    <!doctype html>
    <html>
       <head>
          <title>Backbone tutorial</title>
       </head>
       <body>
          <div class="user">user</div>
          <div class="page"></div>

          <script type="text/template" id="user-list-template">
            <h1> <%= data.key %> </h1>

          </script>

          <script type="text/javascript" src="jquery.js"></script>
          <script type="text/javascript" src="underscore.js"></script>
          <script type="text/javascript" src="backbone.js"></script>
          <script>

这是我的收藏代码

              var Album = Backbone.Collection.extend({

                url : "/data.json"
              });

这是我的查看代码

             var UserList= Backbone.View.extend({
                el:'.page',
                template:_.template($('#user-list-template').html()),
                render : function(){
                    var that=this;
                    var album= new Album();
                    album.fetch({
                        success:function(album){

                            var _data = {data : album.models} ;

                            $(that.el).html(that.template(_data));
                        }
                    })


                }

             });

这是我的路由器代码

             var Router = Backbone.Router.extend({
                routes: {
                    "":                 "home"   // #help
                }


             });



             var userList= new UserList();
             var router = new Router();

             router.on('route:home', function(){
                userList.render();
             });

             Backbone.history.start();
          </script>
       </body>
    </html>

这是data.json文件

{ "key" : "value to print on template "}

这里有很多问题。 首先,集合应由模型组成,您可以在创建集合时由模型指定这些模型。 其次,成功回调返回接收到的数据,而不是集合。 第三,在渲染调用中执行AJAX是个坏主意。

您应该做什么,理想情况下是:

  1. 实例化模型或集合
  2. 提供给视图
  3. 监听模型/集合上的事件,例如(this.listenTo(this.collection,'sync',this.render)
  4. 获取集合。 在您的示例中,可以在路由器中完成提取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM