1
即时编写第一个开源Backbone.js应用程序。 存储库在这里https://github.com/defrag/Backbone-InvoicesBackbone.js保存模型的属性,其他模型的数组
我有保存发票的LineItems数组的问题。那么,仅在编辑后保存,因为它将订单项从当前编辑的发票保存到localstorage中的所有发票。不知道为什么会发生这种情况,他们总是有相同的Cids。 创建发票时的默认订单项始终为cid0。任何帮助?
class window.Invoice extends Backbone.Model
initialize: ->
defaults:
date: new Date
number: '000001'
seller_info: null
buyer_info: null
line_items: [new LineItem]
的最后一件事,我不明白的是为什么骨干心不是保存嵌套的属性。正如你将在回购中看到我做的:
handleSubmit: (e) ->
data = {
date : @$("input[name='date']").val(),
number : @$("input[name='number']").val(),
buyer_info : @$("textarea[name='buyer_info']").val(),
seller_info : @$("textarea[name='seller_info']").val(),
line_items: @model.line_items.toJSON()
}
if @model.isNew()
invoices.create(data)
else
@model.save(data)
e.preventDefault()
e.stopPropagation()
$(@el).fadeOut 'fast', ->
window.location.hash = "#"
事情是在编辑表单和更改行项目的值后,它们不会在集合中更改。添加新的发票订单项集合作品。任何帮助? :)我有一些很难与理解everyhing是如何工作的:)
您可以点击此处查看:http://backbone-invoices.brillante.pl/
很好的答案。或者,把'@line_items = [new LineItem]'放在'initialize'方法中。 –
我也会考虑你的'LineItem'数组是'BackBone.Collection'。它会消除很多你的创建代码(你可以使用“add”代替),并且会清理你的其他代码。 –
谢谢你们,我设法解决这个问题。事实证明,保存模型的嵌套属性是一个小问题。我最终使用Collection来处理订单项,并在发送到localStorage之前将所有内容解析为JSON – Michal