0

Click here for the js fiddle exampleBackboneJs приложение не делает ничего

Этот шаблон должен отображать новые сообщения в коллекции, им пытаются следовать this tuorial с моей собственной версии, что делает сообщения вместо

<div id="messages" style="width: 600px"> 
    </div> 

    <script type="text/template" id="messageTemplate"> 
     <a href="#" class="list autoWidth <% if(has_been_read) { %> selected <% } %>"> 
      <div class="list-content"> 
       <img src="//www.polyvore.com/cgi/img-thing?.out=jpg&size=l&tid=20774792" class="icon"> 
       <div class="data"> 
        <span class="item-title-secondary fg-gray"><b><%= sender %></b></span> 
       </div> 
        <span class="tertiary-text"> 
         <%= message %> 
        </span> 
      </div> 
     </a> 
    </script> 

Это Javascript

var messagesjson = [ 
       { 
        id: 3, 
        message: "This is the message", 
        sender: "gabriel", 
        receiver: "gabriel", 
        has_been_read: false, 
        has_been_reported: false, 
        created_at: "2014-10-23T19:55:20+0200", 
        is_friend: false 
       }, 
       { 
        id: 5, 
        message: "I'm loving this ", 
        sender: "gabriel", 
        receiver: "gabriel", 
        has_been_read: true, 
        has_been_reported: false, 
        created_at: "2014-10-23T20:02:34+0200", 
        is_friend: false 
       }]; 

      var MessageModel = Backbone.Model.extend({ 
       defaults: 
       { 
        id: 3, 
        message: "This is the message", 
        sender: "gabriel", 
        receiver: "gabriel", 
        has_been_read: false, 
        has_been_reported: false, 
        created_at: "2014-10-23T19:55:20+0200", 
        is_friend: false 
       } 
      }); 

      var MessageView = Backbone.View.extend({ 
       tagName: "div", 
       className: "listview", 
       template: $('#messageTemplate').html(), 
       render: function() 
       { 
        var tmpl = _.template(this.template); 
        this.$el.html(tmpl(this.model.toJSON())); 
        return this; 
       } 
      }); 

      var MessageCollection = Backbone.Collection.extend({ 
       model: MessageModel 
      }); 

      var MessageCollectionView = Backbone.View.extend({ 
       el: $('#messages'), 
       initialize: function() 
       { 
        this.collection = new MessageCollection(messagesjson); 
        this.render(); 
       }, 
       render: function() 
       { 
        var that = this; 
        _.each(this.collection.models, function(item){ 
         that.renderMessage(item); 
        },this); 
       }, 
       renderMessage: function(item) 
       { 
        var messageview = MessageView({ 
         model: item 
        }); 

        this.$el.append(messageview.render().el); 
       } 
      }); 

      var messagecollectionview = new MessageCollectionView(); 

вместо того, чтобы отображать сообщения внутри шаблона «сообщения», он не ren что-нибудь.

по какой-то причине это говорит функция не определена, но не указывает его наружу системообразующих расслоение плотной кода, это порядок, я добавил, что скрипты

<script src="//jashkenas.github.io/underscore/underscore-min.js"></script> 
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script> 
<script src="http://backbonejs.org/backbone.js"></script> 

ответ

1

У вас ошибка в вашем коде:

var messageview = MessageView({ 
    model: item 
}); 

должно быть действительно

var messageview = new MessageView({ 
    model: item 
}); 

См. JSFiddle.

+0

Прекрасное спасибо :) – user3531149

+0

не одинаковы?! –

+0

@coding_idiot Я думаю, что вы заметили ключевое слово 'new' во втором примере. И нет, они не из-за этого. – Dethariel