Jak zorganizować renderowanie template w Backbone

Hej

Co prawda nie jest to do końca forum JS, ale na pewno wiele osób ogarnia w stopniu co najmniej dobrym Backbone.js więc postanowiłem się spytać.

Mam taki widok (Handlebars + Haml; werja beta :P):

[code=ruby]%script#sentences_hb{:type => “text/x-handlebars-template”}

= form_tag search_sentences_url, :method => :get, :id => “search-sentences” do

= select_tag :authority_name, {}, class: 'authority-name'
= select_tag :authority_detail_1, {}, class: 'authority-detail-1'
= select_tag :authority_detail_2, {}, class: 'authority-detail-2'

= submit_tag "Submit"

{{sentences.length}}
{{#each sentences.models}}
%p {{attributes.authority_name}} {{attributes.authority_detail_1}} {{attributes.authority_detail_2}}
{{/each}}[/code]
Handlebars ma identyczną skłądnie jak Mustache (tak na marginesie).

Mam obecnie napisane w backbone.js coś takiego że przy każdej zmianie select’a

events: 'change .authority-name': 'getAuthorityDetail1' 'change .authority-detail-1': 'getAuthorityDetail2' 'change .authority-detail-2': 'getSentences'
np na zmianie :authority_name idzie request do Aplikacji. Pobierane jest kolekcja i zwracana w JSON’ie
Następnie po tym aktualizowany jest select .authority-detail-1 (dodaje wartości poprzez Jquery.append() ), i jeśli zmieni się wartość na
authority-detail-1 to znowu idzie request i pobierana jest wartość i dodawana.
Na ostatnim select’cie .authority-detail-2 po zakończonym sukcesem fetch(), Wywołuje callback’a w którym nakazuje z-renderowanie widoku z pobraną kolekcją.
Coś w stylu:

fetchSentences: (authority_name, authority_detail_1, authority_detail_2, callback) => this.fetch url: this.url + "/search?" + authority_name.serialize() + "&" + authority_detail_1.serialize() + "&" + authority_detail_2.serialize() success: -> callback() if callback and typeof (callback) is "function"
Cały mechanizm działa w skrócie tak że dodaje pobrane wartości z serwera poprzez jQuery.append() do selektów. Jednak jak gdy wyrenderowuje template’a to wtedy stracę zaznaczone wartości selekta.

Tutaj pojawia się moje pytanie (głównie odnośnie tego które wyjście jest jak najbardziej zgodne z ‘backbone way’).

  1. Dodawanie wartości poprzez jQuery.append() i zapamiętywanie opcji selektów w zmiennych instancji ( np @authority_name_select)
  2. Narobienie mnóstwo modeli np AuthorityName, AuthorityDetail1 itd i skorzystanie z nich w odpowiednich kolekcjach.
  3. [ Tutaj wpisz inną lepsza alternatywę która mi nie przychodzi do głowy ].

Czy jest jakieś zgrabniejsze obejście asynchroniczności fetch’a niż zabawa z callbackiem? Chodzi mi o to że chce po zakończonym sukcesem requescie wykonać parę akcji.