2015-03-04 2 views
0

Я не получаю никаких ошибок, но по какой-то причине мои данные не загружаются в мои представления. Я использую Requirejs и Marionette. Я так долго смотрел на это, это, вероятно, прямо передо мной, и я только что получил туннельное видение и не вижу его. Вот мои файлы:Почему моя базовая коллекция не потянула данные?

Вот мой main.js:

define([ 
     "jquery", 
     "underscore", 
     "backbone", 
     "marionette", 
     "app/views/Listings", 
     "app/collections/ListingsCollection"], function($, _, Backbone, Marionette, Listings, ListingsCollection){ 

     "use strict"; 

     var App = new Backbone.Marionette.Application(); 

     App.addRegions({ 
      listingRegion: "#listingsView" 
     }); 

     var listingsCollection = new ListingsCollection(); 
     listingsCollection.fetch().done(function() { 
      var listingsView = new Listings({collection: listingsCollection}); 
      App.listingRegion.show(listingsView);  
     }); 

     App.start(); 
     Backbone.history.start(); 
    }); 

Вот мой ListingsItemView.js

define(['marionette', 'tpl!app/views/templates/Listings'], 
     function (Marionette, template) { 
     "use strict"; 

     var ListingsItemView = Marionette.ItemView.extend({ 
      template: template() 
     }); 
     return ListingsItemView; 
    }); 

Вот мой ListingsCollectionView.js: (примечание: эта консоль. журнал под методом инициализации не будет отображаться на консоли.)

define(['marionette', 'backbone', 'app/views/ListingsItemView'], function (Marionette, Backbone, ListingsItemView) { 
    'user strict'; 

    var ListingsCollectionView = Backbone.Marionette.CollectionView.extend({ 

     initialize: function() { 
      console.log('Collection view log: ' + this.collection); 
     }, 

     childView: ListingsItemView, 
     tagName: 'ul' 

    }); 

    return ListingsCollectionView; 

}); 

Это мой шаблон, где, как предполагается, данные для загрузки:

<div> 
    <h1>LISTINGS</h1> 
    <ul> 

    </ul> 
</div> 

Вот мой ListingsModel.js:

define(['marionette', 'backbone'], function (Marionette, Backbone) { 
    'use strict'; 

    var ListingsModel = Backbone.Model.extend({ 

    }); 
    return ListingsModel; 
}); 

И, наконец, вот мой ListingsCollection.js:

define(['backbone', 'marionette', 'app/models/ListingsModel'], function (Backbone, Marionette, ListingsModel) { 
    'user strict'; 

    var ListingsCollection = Backbone.Collection.extend({ 
     model: ListingsModel, 
     url: 'http://localhost:1337/post' 
    }); 
    return ListingsCollection; 
}); 

Примечание: Я не выполняйте никаких ошибок в консоли при запуске этого приложения. Я просто не загружаю никаких данных. URL http://localhost:1337/post успешно отправляет эти данные через расширение Почтальон Chrome:

[ 
    { 
     "userID": "54e6a5de61505403004698d8", 
     "title": "Granite counter tops", 
     "description": "I'm looking for granite counter tops for my kitchen. Willing to trade my skill set.", 
     "email": "[email protected]", 
     "createdAt": "2015-02-20T03:12:46.349Z", 
     "updatedAt": "2015-02-20T03:12:46.349Z", 
     "id": "54e6a62e61505403004698d9" 
    }, 
    { 
     "userID": "54e6b0236430c203000ecb86", 
     "title": "Just a Yahoo looking for a lawn mower", 
     "description": "need it now", 
     "email": "[email protected]", 
     "createdAt": "2015-02-20T03:55:37.705Z", 
     "updatedAt": "2015-02-20T03:55:37.705Z", 
     "id": "54e6b0396430c203000ecb87" 
    }, 
    { 
     "createdAt": "2015-03-03T05:03:39.176Z", 
     "updatedAt": "2015-03-03T05:03:39.176Z", 
     "id": "54f540abdeddf07904a95cab" 
    }, 
    { 
     "createdAt": "2015-03-03T05:04:11.428Z", 
     "updatedAt": "2015-03-03T05:04:11.428Z", 
     "id": "54f540cbdeddf07904a95cac" 
    }, 
    { 
     "userID": "54e6a5d261505403004698d7", 
     "title": "", 
     "description": "", 
     "email": "[email protected]", 
     "createdAt": "2015-03-03T16:08:06.843Z", 
     "updatedAt": "2015-03-03T16:08:06.843Z", 
     "id": "54f5dc660676aa030096bf30" 
    }, 
    { 
     "userID": "54e6a5d261505403004698d7", 
     "title": "My title", 
     "description": "Descrip", 
     "email": "[email protected]", 
     "createdAt": "2015-03-03T16:08:21.464Z", 
     "updatedAt": "2015-03-03T16:08:21.465Z", 
     "id": "54f5dc750676aa030096bf31" 
    } 
] 
+0

выглядит как проблема main.js - я думаю, что было бы лучше переместить логику выборки в представление коллекции и добавить в initializer 'this.collection.on ('sync', this.render, this)', как ваш основной .js, вы можете держать там только интуитивные представления, модели и подключать их. Кроме того, хорошая практика запускает начальные действия в начале приложения - так что оберните код, где вы запускаете модели и просматриваете в 'on ('start')' обратный вызов. конечной точкой является 'tpl!' - он возвращает функции? очень часто используется «текст!» и он возвращает шаблон – Evgeniy

ответ

0

В ваших main.js вы определили «приложение/просмотров/Перечни», но в соответствии с вашими именами файлов это должно быть «приложение/просмотров/ListingsCollectionView».

Смежные вопросы