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