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

时间:2014-04-06 10:02:37

标签: javascript underscore.js underscore.js-templating

我正在编写一个简单的骨干程序。但是我不确定在将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 "}

1 个答案:

答案 0 :(得分:1)

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

你应该做什么,理想情况如下:

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