2013-07-30 35 views
1

我有一個單頁應用程序的木偶和手柄設置。我沒有開始這個項目;它最初是由其他人開發的。marionette serializeData集合中沒有模型

我設法找出其他文件中的東西,但我無法弄清楚這一個。

所以,我有型號/ order.coffee

Model = require './model' 
Collection = require './collection' 

module.exports = class OrderModel extends Model 
    # This is the *real* orders model 
    idAttribute: 'uid' 
    defaults: 
    title: 'some order' 

module.exports = class Orders extends Collection 
    model: OrderModel 

    url: base_url+'history/' 

    initialize: => 
    super 
    @fetch() 

    parse: (response) => 
    return response.objects 

parse是因爲怎樣的後端返回數據的存在。 response.objects包含哪些模型創建JSON對象的列表,這是OrderModel實例\

接下來是views/SettingsOrderView.coffee

template = require './templates/settings/orders' 

module.exports = class SettingsOrdersView extends Backbone.Marionette.ItemView 
    template: template 
    events: 'click #back_to_options': 'goToOptions' 

    serializeData: => 
     data = @.collection 
     setTimeout (-> console.log(data.models)), 5000 
     $.each data.models, (m_index, m) => 
      console.log(m) 

     return {items: @.collection} 

我的問題是在我做{{#each items}}模板,但他們OrderModel的情況下, ,所以它們在把手中沒用。我需要將它們作爲JSON對象,但由於某種原因(實際上collection.fetch())不會在serializeData中填充@.collection.models。 5秒後(如setTimeout所示),data.models是我所需要的清單,但each未執行,因爲那時data.models是一個空列表。

如上所述,我需要JSON化模型,但不可用。我怎樣才能解決這個問題 ?

如果您需要其他數據,請發表評論,我會將其發佈。

謝謝。

回答

1

對於渲染收藏木偶提供的CollectionView:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md

有關時使用的CollectionView或多個項目ItemView控件,看到這個優秀的文章討論: http://lostechies.com/derickbailey/2011/10/11/backbone-js-getting-the-model-for-a-clicked-element/

要序列模型,你可以在模型上調用model.toJSON()。或者您可以簡單地通過get()函數獲取單個屬性,或者在模型和/或集合上編寫自己的JSON方法。在這種情況下,您可以簡單地在集合上調用該方法。

但我想你真正的問題是調用fetch()。如果我正確地理解了你,那麼當你嘗試使用它們時,這些模型似乎就會丟失。 Backbone爲這種情況提供了成功的回調。這個回調將在數據準備就緒時被調用。

http://backbonejs.org/#Collection-fetch

現在,我從來沒有被自己用這個 - 使用的WebSockets和承諾,而不是骨幹同步機制 - 但採取偷看這篇文章,這可能是你的情況下非常有用:

http://lostechies.com/derickbailey/2012/02/03/get-a-model-from-a-backbone-collection-without-knowing-if-the-collection-is-loaded/

+0

謝謝。最後,我刪除了該集合,並在模型本身上使用了「成功」回調。這是我在這裏做的一些破解,但爲我的目的服務。 – ep0