0

アクティビティ、名前、レート、時間の列を持つエントリ (= コレクション) のテーブルがあります。

現在、アクティビティはオプション(=別のコレクション?)を含む選択ボックスであり、さらに、レートは現在選択されているオプションの属性からコピーする必要があります..

これらのオプションを最初のコレクションのテンプレートに注入 (?) するにはどうすればよいですか? 特に、最初のコレクションのレンダリングで他のコレクション (レート) の属性が必要な場合。

また、これらのオプションは常に同じであり、選択したパラメーターは後で javascript を使用して設定できるため、それぞれの中にそれぞれを入れたくありません。

// 実際には、selectbox からレートをコピーする必要はありません。バックボーンに変換する前に、このようにする必要がありました。

一方、私はまだ変更時にそれが必要になります..

4

1 に答える 1

0

ここにあなたが試すことができるものがあります。あなたの目的が何であるかについてはまだ 100% ではありませんが、必要以上に複雑な角度から問題を解決しようとしているように感じます。

意見:

var EntryView = Backbone.View.extend({
  /** Get the values from the view elements. */
  serialize: function() {
    return {
      activity: this.$('.activity :selected').val(),
      person: this.$('.person :selected').val(),
      budget: this.$('.budget').val()
    }
  },
  events:{
      'change .test': 'changeActivity'
    },
  changeActivity: function(ev) {
     /** Event is triggered when any of the select element changes. */
     var entry = this.serialize();
     console.log(entry);
  }, ...

あなたのテンプレートでは、各要素に追加のクラスを追加して、それらを互いに区別しました。

テンプレート:

<script type="text/template" id="tpl_entries">
<% _.each(entries, function(entry) { %>
   <tr>
    <td>
    <select class="activity test">                              
       <% _.each(activities, function(activity) { %>                                
          <option><%= activity.get('name') %></option>
       <% }); %>
    </select>
    </td>
        <td>
    <select class="person test">
      <% _.each(people, function(person) { %>
           <option><%= person.get('name') %></option>
      <% }); %>
    </select>
    </td>
        <td>
<div class="input-append">
    <input class="budget input-small" type="text" 
                   value="<%= entry.get('budgeted') %>" /> ...

これが役に立ち、正しい方向に導くことを願っています。

于 2013-03-13T16:03:47.837 に答える