【发布时间】:2013-07-30 09:18:41
【问题描述】:
我为单页应用程序设置了 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 对象列表,即OrderModelinstances\
接下来是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())没有在 serializeData 中填充 @.collection.models。 5 秒后(如 setTimeout 所示)data.models 是我需要的列表,但 each 未执行,因为当时 data.models 是一个空列表。
如前所述,我需要对模型进行 JSON 化,但不可用。我该如何解决这个问题?
如果您需要其他数据,请发表评论,我会发布。
谢谢。
【问题讨论】:
标签: coffeescript handlebars.js marionette