0

我開始了一個新鮮的BackboneJS項目,並且實現了一些簡單的代碼。 它沒有調用正確的功能,我想,我沒有看到任何錯誤,我也沒有看到預期的console.log調用。Backbone not loading集合

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

也許你的控制檯中應用了過濾器,不顯示正常日誌。你可以創建一個[mcve]來證明這個問題嗎? –

回答

1

你的路由是不正確,其他一切都很好,這裏的工作JSFiddle

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

這是我不得不做,由於上的jsfiddle特定的URL結構,唯一的變化。我建議你調試代碼,並進入這個start函數,你可能會在loadUrl函數中結束,你可以看到正在評估的片段。