Budowanie aplikacji, która korzysta z wielu (2 na razie) zbiorów globalnych, jest katalogiem zarówno dokumentów, jak i pacjentów, mają relacje, ale nie jak w dokumencie lub listy dokumentów należących do 1 pacjenta, więc są W rzeczywistości 2 oddzielne kolekcje,

Moja aplikacja jest ustrużona w systemie modułu bardzo podobnie jak opisana tutaj: http://weblog.booup.com/organizowanie-your-backbone -Js-aplikacje - z modułami

Dokumentacja backbone.js mówi o bootstring, aby zrobić coś takiego,

<script>
  Accounts.reset(<%= @accounts.to_json %>);
</script>

Jest to w aplikacji Rails, musiałbym jednak zrobić to inaczej w ASP.NET MVC3, najprawdopodobniej wystarczy wydrukować mój ciąg JSON bez <% =%>, co nie jest brzytwy styl silnika)

Ale moje pytanie tutaj jest,

To Accounts.reset(...data...); jest po prostu pływające gdzieś w moim znaczniku, w żaden sposób nie jest w żaden sposób ładnie skonstruowany w moim systemie modułu, czy nie ma sposobu, aby ładnie to zrobić? gdzie mogę uzyskać dane, z mojego modułu?

I kolejne pytanie boku, przypuśćmy, że mam trasę w mojej aplikacji backbone http://examplollow.pl/#documents

A ktoś wywołuje ten link bezpośrednio, czy moja aplikacja będzie gotowa do gotowości (z bootstrap) na czas, zanim sama trasa zostanie wykonana?

16
Sander 26 październik 2011, 00:58

3 odpowiedzi

Najlepsza odpowiedź

Mam tendencję do konfiguracji obiektów application - obiektu, który obejmuje cały kod potrzebny do rozpoczęcia mojej aplikacji. Następnie podejmuję parametry w konstruktorze tego obiektu, aby mogły być używane przez obiekt aplikacji. Przejście wstępnie załadowane dane JSON do obiektu App jest jedną z rzeczy, które robię, aby utrzymać kodu sane i kapsułkowane.

Idzie coś w ten sposób, zazwyczaj:

MyApp = (function(Backbone, _){
  var MyModel = Backbone.Model.extend({});

  var MyCollection = Backbone.Collection.extend({
    model: MyModel
  });

  var MyView = Backbone.View.extend({
    initialize: function(){
      this.collection.bind("reset", this.render, this);
    },

    render: function(){
      // do stuff with the collection here
    }
  });

  var myApp = function(initialModels){
    this.start = function(){
      this.models = new MyCollection();
      this.myView = new MyView({collection: this.models});
      this.models.reset(initialModels);  
    };
  };

  return myApp;
})(Backbone, _);

A następnie na mojej stronie, która musi uruchomić aplikację, robię to:

<script language="javascript">
  var myApp = new MyApp(<%= mymodels.to_json %>);
  myApp.start();
</script>

To oczywiście wersja Rails. Wystarczy wymienić <%= ... %> za pomocą wersji Składnia maszynki do Razor w ASP.NET MVC.

10
Andrew Marshall 26 październik 2011, 06:46

Jeśli na szynach: Oprócz Dericks Odpowiedz Możesz użyć Gon "Uzyskaj zmienne szyny w swoim js ".

Wtedy inicjujesz taką aplikację:

<script language="javascript">
  var myApp = new MyApp(gon.mymodels);
  myApp.start();
</script>
0
hc2p 17 październik 2013, 15:14

Doskonały przykład z Derick! Dla MVC 3+ Użyj tej składni:

<script language="javascript">
  var myApp = new MyApp( @Html.Raw(Json.Encode(Model)) );
  myApp.start();
</script>
0
Pavel Samoylenko 20 grudzień 2015, 19:40