我为单页应用程序设置了 Marionette 和 Handlebars。我没有开始这个项目;它最初是由其他人开发的。
我设法找出其他文件中的内容,但我无法弄清楚这一点。
所以,我有models/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 的实例,所以它们在 Handlebars 中没用。我需要将它们作为 JSON 对象,但由于某种原因(collection.fetch()
实际上)没有填充@.collection.models
到serializeData
. 5 秒后(如 中所示setTimeout
),这data.models
是我需要的列表,但each
没有执行,因为当时data.models
是一个空列表。
如前所述,我需要对模型进行 JSON 化,但不可用。我怎样才能解决这个问题 ?
如果您需要其他数据,请发表评论,我会发布。
谢谢。