/ / Jak powinny się wzajemnie zmieniać widoki w aplikacji Backbone? - javascript, backbone.js

Jak powinienem się nawzajem zmieniać w aplikacji szkieletowej? - javascript, backbone.js

Mam widok kręgosłupa o nazwie Foo, który mapasek przewijania. Gdy pasek przewijania zostanie przesunięty w pewnym kierunku, chcę, aby inne widoki w mojej aplikacji zmieniały się na różne sposoby. Widoki te nie są zagnieżdżone w Foo - są całkowicie oddzielone i zarządzane niezależnie.

Czy powinienem przekazać odniesienia do wszystkich innych poglądóww konstruktorze Foo, aby mógł je ręcznie zaktualizować? Czy powinienem użyć zdarzeń, aby powiadomić o tych innych widokach ruchu paska przewijania? Jeśli tak, to jaki obiekt powinien zostać wywołany przez Foo i wysłuchany przez inne widoki?

Są to zmiany czysto wizualne i nie ma modelu, który by je wspierał.

Odpowiedzi:

3 dla odpowiedzi № 1

używałbym wydarzeń w tym przypadku

weź ten przykład:

NavigationView = Backbone.View.extend({
initialize: function(options){
options.events.bind("navigation:change", this.changeNavigation);
this.render();
},

changeNavigation: function(key){
$(".menuItem", $(this.el)).removeClass("active");
$(".menuItem", $(this.el)).filter("." + key).addClass("active");
},

render: function(){
// rendering goes on here....

}
});

UserListView = Backbone.View.extend({

initialize: function(options){
options.events.trigger("navigation:change", "users");
this.render();
},

render: function() {
// rendering goes on here....

}
});

// kickstart the application

var myEvents = _.extend({}, Backbone.Events);

var myNavigation  = new NavigationView({events: myEvents});

// this is just a collection of users... i left it out as it is not really the point here...
var users = new UserList();

var myUserList = new UserListView({collection: users, events: myEvents});

gdybyś potrzebował więcej informacji na temat obu odnośników1 widok na inny lub zdarzenia, możesz również dobrze przyjrzeć się temu artykułowi Dericka Baileya, wyjaśnia powyższą metodę jako agregator zdarzeń i wymienia udokumentowany przykład, jak z nią pracować (i alternatywy). http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/