Backbone.js affiche les variables d'instance?
Je suis en apprentissage Backbone.js et je suis à essayer de comprendre si il est possible d'avoir les variables d'instance de la colonne vertébrale vues.
Mon but est de charger une vue de modèles à partir d'un fichier externe lorsqu'une vue est instanciée. Actuellement, je suis en les stockant dans une variable globale dans l'épine Dorsale de l'app de l'espace de noms global, mais il serait plus propre à stocker les modèles en vue de variables d'instance. Actuellement je l'ai configuré comme ceci:
var templates = {};
MessageView = Backbone.View.extend({
initialize: function() {
$.get('js/Test2Templates.tpl', function(doc) {
var tmpls = $(doc).filter('template');
templates['MessageView'] = [];
tmpls.each(function() {
templates.MessageView[this.id] = $.jqotec($.unescapeHTML(this.innerHTML));
});
});
},
render: function() {
var tpldata = {name: 'Ville', thing: 'Finland'};
$('#display').jqoteapp(templates.MessageView.greeting_template, tpldata);
},
events: {
"click input[type=button]": "additionalTransactions"
},
additionalTransactions: function() {
this.render();
}
});
Mais au lieu d'utiliser des "modèles" étant défini comme un global var, j'aimerais créer des "modèles" en vue de la fonction d'initialisation, le long de ces lignes (mais cela ne fonctionne pas):
MessageView = Backbone.View.extend({
view_templates: {},
initialize: function() {
$.get('js/Test2Templates.tpl', function(doc) {
var tmpls = $(doc).filter('template');
tmpls.each(function() {
this.view_templates[this.id] = $.jqotec($.unescapeHTML(this.innerHTML));
});
});
},
render: function() {
var tpldata = {name: 'Ville', thing: 'Suomi'};
$('#display').jqoteapp(this.view_templates.greeting_template, tpldata);
},
events: {
"click input[type=button]": "additionalTransactions"
},
additionalTransactions: function() {
this.render();
}
});
C'est probablement (?) assez simple et/ou évident, mais moi d'être quelque part sur la Backbone.js la courbe d'apprentissage, j'avais beaucoup apprécier l'aide de ce!! Merci!
source d'informationauteur Ville
Vous devez vous connecter pour publier un commentaire.
Votre
view_templates
variable d'instance est bien (et une bonne idée). Vous avez juste à être sûr que vous utilisez la bonnethis
à l'intérieur de votre$.get()
de rappel et à l'intérieur de votretmpls.each()
appel. Je pense que vous voulez que votreinitialize
à ressembler à ceci:Je ne suis pas sûr
this.id
vous voulez à l'intérieur de latmpls.each()
mais je parie que vous voulez les DOMid
attribut du modèle alors je l'ai laissé commethis.id
.La
this.view_templates
devoir de votre constructeur (initialize
) est nécessaire, parce que sans doute vous voulez que chaque instance de la vue pour avoir sa propre copie de la matrice. La création d'une nouvelle instance de vue ne fait pas une copie en profondeur de la vue, donc si vous avez:alors toutes les instances se retrouvent à partager le même
view_templates
objet etview_templates
se comportera plus comme une variable de classe qu'une variable d'instance.Vous pouvez spécifier vos variables d'instance dans la définition de la vue (c'est à dire la
Backbone.View.extend()
appel) comme une forme de documentation, mais vous souhaitez initialiser l'un d'eux que doit se comporter comme une variable d'instance dans votreinitialize
méthode; en lecture seule ou en "variables de classe" commeevents
peut être laissé à la vue de la définition.