2014-01-26 6 views
0

Когда я вручную определяю содержимое своей коллекции, все работает. Но после того, как я попытаюсь извлечь данные с сервера (я получаю действительный ответ), мой просмотр не отображается. Просмотр коллекции (ul) показывается, но одиночные представления (li) нет? Есть ли что-то, что мне нужно посмотреть, когда вы собираете данные в коллекцию?Reqiurejs and Backbone - Collection fetch

UPDATE

main.js

require.config({ 

    paths: { 

     "jquery":"vendor/jquery/jquery", 
     "underscore":"vendor/underscore-amd/underscore", 
     "backbone":"vendor/backbone-amd/backbone", 
     "text":"../vendor/requirejs/text", 
     "mustache": "../vendor/mustache/mustache" 

    }, 

    shim: { 

     underscore: { 
      exports: "_" 
     }, 
     backbone: { 
      deps: ['underscore', 'jquery'], 
      exports: 'Backbone' 
     } 
    } 


}); 

require([ 

    'app', 
], function(App){ 
    // The "app" dependency is passed in as "App" 
    App.initialize(); 
}); 

app.js

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'collections/ObjaveCollection', 
    'views/ObjaveView' 

], function($, _, Backbone,ObjaveCollection,ObjaveView){ 

    var initialize = function(){ 

     var objave = new ObjaveCollection(); 
     objave.fetch(); 

     var objaveView = new ObjaveView({ collection: objave}); 
     $(document.body).append(objaveView.render().el); 

    } 

    return { 

     initialize : initialize 

    }; 
}); 

ObjavaModel.js

define([ 
    'jquery', 
    'underscore', 
    'backbone' 
], function($, _, Backbone){ 

    var ObjavaModel = Backbone.Model.extend({ 

     defaults:{ 

      naslov: 'My service', 
      cijena: 100, 

     } 

    }); 


    return ObjavaModel; 

}); 

ObjaveCollection.js

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'models/ObjavaModel' 
], function($, _,Backbone,ObjavaModel){ 

     var ObjaveCollection = Backbone.Collection.extend({ 
     model: ObjavaModel 

    }); 

    return ObjaveCollection; 

}); 

ObjavaView.js

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'text!templates/objavaTemplate.html', 
    'mustache', 

], function($, _, Backbone,objavaTemplate,Mustache){ 

    var ObjavaView = Backbone.View.extend({ 

     tagName: "li", 

     initialize: function() { 

      this.template = objavaTemplate; 

     }, 

     render: function() { 

     rendered = Mustache.to_html(this.template, this.model.toJSON()); 
     $(this.el).html(rendered); 


     return this; 
     } 

    }); 

    return ObjavaView; 

}); 

ObjaveView.js

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'views/ObjavaView' 

], function($, _, Backbone,ObjavaView){ 

    var ObjaveView = Backbone.View.extend({ 

     tagName: 'ul', 

     render: function() { 
     this.collection.each(function(item) { 
     console.log(item); 
     var objavaView = new ObjavaView({ model: item }); 
     console.log(this.$el); 
     this.$el.append(objavaView.render().el); 
    }, this); 

    return this; 

    } 

}); 

    return ObjaveView; 

}); 

ответ

2

Вы перерисовка Вашего мнения после того, как данные были неправдоподобными? Например, на ваш взгляд (ObjaveView.js) add:

initialize: function() { 
    this.listenTo(this.collection, "sync", this.render); 
} 
+0

Нет, я пытаюсь увидеть свою ошибку. Я обновил вопрос и добавил свой код. Спасибо за ваш ответ. – Sysrq147

+0

Попробуйте добавить вышеприведенный фрагмент к ObjaveView.js, который должен работать – Karolis

+0

Я пробовал. Без успеха :( – Sysrq147