0

Я начал новый проект BackboneJS, и я реализовал простой код. Он не вызывает правильные функции, я думаю, я не вижу никаких ошибок, и я также не вижу ожидаемых звонков console.log.Магистраль, не загружающая сбор

import _ from 'underscore'; 
import {Events} from 'backbone'; 
import Observables from './Models/Observables'; 
import ObservablesView from './Views/ObservablesView'; 

(function() { 
    let setGlobals = function() { 
     window.App = {}; 
     App.events = _.clone(Events); 
    }; 

    let init = function() { 
     setGlobals(); 

     // Get the collection from localStorage. 
     let observables = new Observables(); 
     new ObservablesView({el: "#observables", collection: observables}); 

     Backbone.history.start({pushState: true}); 
    }; 

    window.addEventListener('load', init); 
})(); 

Это мой маршрутизатор:

import {Backbone} from 'backbone'; 
import {Router} from 'backbone'; 

const FedRouter = Router.extend({ 
    routes: { 
     '': 'index' 
    }, 

    index: function() { 
     App.events.trigger('observables'); 
    } 
}); 
export default FedRouter; 

Это мое мнение:

import {View} from 'backbone'; 
import FedRouter from "../FedRouter"; 

/** 
* ObservablesView is the list of items we want to keep track of. 
*/ 
const ObservablesView = View.extend({ 
    router: null, 

    /** 
    * Init a new view object. 
    * @constructor 
    */ 
    initialize: function() { 
     this.router = new FedRouter(); 
     App.events.on('observables', this.loadObservables, this); 
    }, 

    loadObservables: function() { 
     console.log("loadObservables"); 
     this.collection.fetch({ 
      success: (collection) => console.log(collection), 
      error: (collection, response) => console.log(response) 
     }); 
    } 

}); 

export default ObservablesView; 

Моя коллекция:

import {Backbone} from 'backbone'; 
import {Collection} from 'backbone'; 
import Observable from './Observable'; 
import Store from 'backbone.localstorage'; 

const Observables = Collection.extend({ 
    model: Observable, 
    localStorage: new Store('fed-observables') 
}); 

export default Observables; 

И, наконец, моя модель:

import {Model} from 'backbone'; 

const Observable = Model.extend({ 
}); 
export default Observable; 

Так как же я не вижу сообщение «loadObservables», которое регистрируется. Что я не настраиваю?

+0

Выполняется ли это утверждение? window.addEventListener ('load', init); Поскольку я чувствую, есть проблема с привязкой события загрузки. Кроме того, если вы используете jQuery, можете ли вы попробовать выполнить то же самое с document.ready? Это просто мысль. – Nitesh

+0

Возможно, у вас есть фильтр, примененный в вашей консоли. Tat не отображает обычные журналы. Не могли бы вы создать [mcve], демонстрирующие проблему? –

ответ

1

Ваша маршрутизация неверна, все остальное в порядке, вот рабочий JSFiddle

Backbone.history.start({pushState: true, root: "_display/"}); 

Это единственное изменение, которое я должен был сделать, из-за особенности структуры URL на JSFiddle. Я предлагаю вам отлаживать код и входить в эту функцию start, вы, скорее всего, окажетесь в функции loadUrl, где вы можете увидеть фрагмент, который будет оцениваться.