无法在骨干网中显示json内容

时间:2011-12-11 05:35:20

标签: javascript ruby-on-rails json backbone.js

我的应用程序上的一切都运行良好,但是当我在浏览器控制台中手动添加对象时,我在Get中获取了json模型数据,但它没有在网页上呈现。

我在列表视图中调用备注视图以呈现为UL。

这是我的html元素

<html>

<head>

<title> Backbone Demo </title>
<%= stylesheet_link_tag    "application" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>


<script type="text/template" id="library-template">
<h1> My Notes List </h1>
<ul class="mynotes"></ul>

</script>


<script type="text/template" id="mynote-template">
<div class="mynote-title"> </div>
<div class="mynote-content"</div>
</script>


</head>
<body>

<div id="container">

</div>

</body>
</html>

这是Backbone View Script。

 window.LibraryView = Backbone.View.extend({
            tagName: 'section',
            className: 'mynotes',


           initialize: function() {
                  _.bindAll(this, 'render');
                  this.template = _.template($('#library-template').html());
                  this.collection.bind('reset', this.render);
           },

           render: function() {
                    var $mynotes,
                          collection = this.collection;

                    $(this.el).html(this.template({}));
                    $mynotes = this.$(".mynotes");
                    collection.each(function(mynote) {
                            var view = new LibraryMynoteview({
                                  model: mynote,
                                  collection: collection
                            });
                            $mynotes.append(view.render().edl);

                    });
                    return this;
           }

});

1 个答案:

答案 0 :(得分:1)

您也应该发布了LibraryMynoteview。我在代码中发现的一件事是你的“mynote-template”不包含任何模板标签。

<script type="text/template" id="mynote-template">
  <div class="mynote-title"> </div>
  <div class="mynote-content"</div>
</script>

这应该是这样的:

<script type="text/template" id="mynote-template">
  <div class="mynote-title">{{title}}</div>
  <div class="mynote-content">{{content}}</div>
</script>

可能是您当前正在渲染页面中的空div元素。我看到的另一件事是你在你的笔记上添加了一些“.edl”(应该是.el):

$mynotes.append(view.render().edl);

不确定这只是一个错字。最后但并非最不重要的是,您的代码需要DOM准备就绪。因此,请确保在以下内容中初始化您的观点:

$(function(){
  // init here
});