2012-05-07 10 views
0

無限の数のユーザーが追加した入力を持つフォームがあります。アンダースコアjs - 番号を付け直すテンプレートのレンダリングされた要素の属性

例として、「参照の追加」セクションを持つジョブアプリケーションを想像してみてください。すでに追加されている参照の隣には「+」ボタンと「Remove」があります。

は、ここで例のテンプレート任意の「参照」が削除されると、私は他の人の番号を変更したいのですが

<script type="text/template" id="referenceTmpl"> 
    <div> 
     <h2>Reference No. <%= index %></h2><a id="removeRef<%= index %>">Remove</a> 
     Name: <input type="text" name="references[<%= index %>].name" /> 
     Email: <input type="text" name="references[<%= index %>].email" /> 
     (...) 
    </div> 
</script> 

です。フォームの入力には保存されていないデータがすでに含まれている可能性があるため、テンプレートを完全に再レンダリングしないで保存する必要があります。私は、ソリューションがより複雑なアプリケーションで使用される可能性があるため、これを販売可能な方法(入力ごとにあまり余分なコードを必要としない方法)で行いたいと思います。

解決策が恩恵を受ける場合は、jQueryを使用しています。

アイデア?

答えて

1

コードにハッキングすることなくこの種のことを行う最善の方法は、いわゆる "参照"のためのモデル(リスト)を使用することです。


あなたはUnderscore.jsとの組み合わせでBACKBONE.JSを試してみてください: Backbone.js documentation

正確に何をしたいんTODOサンプルアプリケーションがあります:


セットアップには時間がかかることがありますが、作業が完了すると作業がはるかに迅速になります。

+0

私は間違っているかもしれませんが、バックボーンでこのようなことを実装しないのは同じ問題がありますか?私は、テンプレートを再作成することで、すべてのものを一掃してしまうと考えました。または、jsオブジェクト内のすべてのプロパティを管理し、onkeyupオブジェクト(テンプレート内のそれらの小道具を含む)に常に保存することをお勧めしますか? – gerges

+0

バックボーンは、モデルを常に最新の状態に保ちます。バックボーンモデル(リスト)の中の何かが変化したとき。モデルビューが再レンダリングされます。したがって、ビューが構築されるときにindex ++のようなものを使用してリストに番号を付けることができます。 –

関連する問題