2017-05-23 28 views
0

我遇到的問題是每當調用listaCollection.fetch()之後調用listaCollection.toJSON()時,它將返回一個空數組。如果我在fetch方法的成功回調中執行了console.log(data.toJSON()),我將能夠看到它正確地取回它。如果我對骨幹/牽線木偶比較陌生,那麼任何幫助都會非常感謝。這是代碼。Backbone Marionette 3 app:Collection fetch返回空數組

import Bb from 'backbone'; 
import Mn from 'backbone.marionette'; 
import template from '../templates/ListasTemplate.jst'; 

const ListaCollection = Bb.Collection.extend({ 
    url: "http://localhost:3000/api/v1/lista/all", 
    parse(data) { 
    return data.lista; 
    } 
}); 

const listaCollection = new ListaCollection(); 

listaCollection.on("change", function() { 
    reset(); 
}); 

listaCollection.fetch({ 
    success(data) { 
    console.log(data.toJSON()); 
    } 
}); 

const ListasView = Mn.View.extend({ 
    collection: listaCollection, 
    className: "mdl-grid", 
    regions: { 
    listasContainer: "#listas-container" 
    }, 
    template: template 
}); 

export default ListasView; 

這是我的模板:

<% _.each(items, function(item) { %> 
    <div class="mdl-cell mdl-cell--6-col"> 
    <div class="demo-card-wide mdl-card mdl-shadow--2dp"> 
     <div class="mdl-card__title"> 
     <h2 class="mdl-card__title-text"><%= item.titulo %></h2> 
     </div> 
     <div class="mdl-card__supporting-text"> 
     <%= item.descricao %> 
     </div> 
     <div class="mdl-card__actions mdl-card--border"> 
     <button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect show-modal"> 
      <i class="material-icons">arrow_forward</i> 
     </button> 
     <button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect"> 
      <i class="material-icons">mode_edit</i> 
     </button> 
     <button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect"> 
      <i class="material-icons">clear</i> 
     </button> 
     </div> 
    </div> 
    </div> 
<% }) %> 
+0

您沒有在問題中顯示您在何處/如何調用'.toJSON()'。您應該等待獲取完成。很確定這是一個重複 –

+0

[Backbone.js fetch不實際設置屬性]的可能重複(https://stackoverflow.com/questions/9584870/backbone-js-fetch-not-actually-setting-attributes) –

+0

@TJ抱歉。我的錯。我在listaCollection工廠聲明中的parse方法中調用toJSON。但是當我調用data.toJSON()時,我得到一個錯誤,指出JSON不是一個函數(我想象因爲輸出已經是JSON)。 –

回答

0

我打電話的toJSON在分析方法的listaCollectionfactory聲明中

好,parse方法的返回值設置作爲收集的數據。因此,如果在parse內調用toJSON,則數據尚未設置,因此它將返回空數組。