最初のオープンソースのBackbone.jsアプリケーションを作成しています。 レポジトリはこちらhttps://github.com/defrag/Backbone-Invoices他のモデルの配列である属性を持つBackbone.jsモデルを保存
インボイスのLineItemの配列を保存する際に問題があります。つまり、現在編集されている請求書の明細を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"を使うことができます)。あなたの他のコードも同様にクリーンアップします。 –
ありがとう、私はこれを把握することができます。モデルであったネストされた属性を保存することで少し問題になりました。最終的に広告申込情報のコレクションを使用し、JSONにすべてを解析してからlocalStorageに送信しました – Michal