Ich genieße backbone.js mehr und mehr. Ich möchte mehrere Ansichten für ein gegebenes Modell haben:Gibt es einen Grund, warum ich das in Backbone.js vermeiden sollte?
- Eine Listenansicht, wo jedes Modell eine Ansicht mit seinem eigenen li-Element hat.
- Eine Detailansicht mit allen Details eines Modells.
Meine Frage ist, ich war ein guter Weg, suche einen Blick zu ermöglichen, mit anderen und wählte die folgenden zu kommunizieren:
/** Allow a model to keep track of it's views. **/
Backbone.Model.prototype.addView = function (view) {
// Ensure our model has a view array.
if (typeof this.views === 'undefined')
{
this.views = [];
}
// Append our newest view to the array only if it is not already present.
if (_.indexOf(this.views, view) === -1)
{
this.views.push(view);
}
}
/** Allow a model to remove all of it's views.
*
* @param {Object} args Any arguments will be provided to the view's method.
*/
Backbone.Model.prototype.unloadViews = function (args) {
var n = (typeof this.views === 'undefined') ? 0 : this.views.length;
for (var i = 0; i < n; i++)
{
var view = this.views[i];
if (typeof view.unloadView === 'function')
{
view.unloadView(args);
}
}
}
/** Allow a model to re-render all of it's views.
*
* @param {Object} args Any argyments will be provided to the view's method.
*/
Backbone.Model.prototype.renderViews = function (args) {
var n = (typeof this.views === 'undefined') ? 0 : this.views.length;
for (var i = 0; i < n; i++)
{
var view = this.views[i];
if (typeof view.render === 'function')
{
view.render(args);
}
}
}
Meine Fragen
- bin ich etwas fehlt wie ich backbone.js lerne, was mir erlaubt, das natürlich zu machen?
- Gibt es einen Grund, warum ich das vermeiden sollte?
Zusätzliche Informationen
ich die Anwendung freigegeben haben (ziemlich rudimentär) auf GitHub: https://github.com/aarongreenlee/Learning-backbone.js. Wenn Sie den Code in dieser Umgebung lieber sehen möchten, können Sie hier darauf zugreifen: https://github.com/aarongreenlee/Learning-backbone.js/commit/ea4e61d934d2f987726720e81c479f9d9bb86e09#diff-2 (initial commit).
Vielen Dank für Ihre Zeit und Hilfe!
+1 für mich auf Backbone.js. – Stephen