I have a classic master-detail scenario that I am implementing in backbone.js.
For the moment I am not concerned with the history and navigation part of backbone.js so I am skipping it.
I have implemented:
Now the data returned from the rest service for the gridView (Backbone collection) is only some partial data of the models.
So to display the full details of a particular model I have to fetch the details again from the rest service.
Fetching from the model end up with a model disconnected from the collection and any update on it isn't reflected on the collection itself and I have to refresh again the master view fetching all the data.
Destroying and recreating the details view sometimes make it loose the view events.
What would be the correct implementation of this scenario? I am not fully understanding the best way of doing things in backbone.
Backbone. Backbone has been around for a long time, but it's still under steady and regular development. It's a good choice if you want a flexible JavaScript framework with a simple model for representing data and getting it into views.
Front-End MVC frameworks (Backbone, Angular, etc) all rely on a backend service to provide the data that, say Backbone, would then use as its model. You could have an entire MVC pattern on the backend that accepts requests and spits out some JSON for a frontend MVC framework to use.
js provides framework to web apps by giving demos with value binding and custom events and allocations with an API of enumerable functions and views with reportive event handling and links all to your existing API over an interface.
Backbone. js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
First, I would suggest returning the full detail for the models in your "gridView" collection query. This solves the 'disconnected collection' issue.
Although, you don't have to do the full collection load - let's say doing a full load for the entire collection is not going to work - the details are too huge, for instance, you should be able to pass the same model from the collection into your detail view, test to see if its a partial load or a full load, and issue a "fetch()" for the model, returning the full data - being that this is the same model as in the collection, it should be updated. Does that make sense?
Also, for the detail views, I would suggest, especially if you're design only calls for one detail view active, to reuse the view and write a function in the view that allows you to swap out the model.
So, in summary:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With