Nie można uzyskać dostępu do wszystkich atrybutów modelu szkieletu z szablonu
Problem, który próbuję debugować, polega na tym, że w moim widoku kręgosłupa dostępne są wszystkie atrybuty modelu (nazwa, identyfikator, adres e-mail itp.) (Mam do wyboru atrybuty modelu console.log ()), jednak renderuj widok przechodzący przez model, tylko atrybut name jest dostępny w szablonie, wszystkie inne atrybuty są niezdefiniowane, czy jest coś, czego brakuje, ponieważ jest to moja pierwsza aplikacja szkieletowa i spędziłem wiele godzin próbując debugować to i przeszedłem przez wielu nauczycieli online i mój kod wydaje się poprawny, dzięki
// Metoda widoku BACKbone (zweryfikowałem i wszystkie wartości modelu są dostępne tutaj)
var profileView=Backbone.View.extend({
el:$('#content'),
initialize:function(){
this.model.bind('change',this.render,this);
},
render:function(){
var self=this;
this.$el.html(_.template(profileTemplate,this.model.toJSON()));
}
});
// SZABLON HTML (profileTemplate), w szablonie dostępny jest tylko atrybut name, // przeglądarka podaje błąd „undefined” dla wszystkich innych atrybutów oprócz atrybutu name
<h1><%=name.first%> <%=name.last%> </h1>//displays correctly
<%=email%> //undefined
//SCHEMAT
var AccountSchema=new mongoose.Schema({
email:{type:String,unique:true},
password:{type:String},
name:{
first:{type:String},
last:{type:String},
full:{type:String}
},
});
// JEST ROZWIĄZANY TERAZ, wydarzyło się, ponieważ wykonałem polecenie fetch na modelu po wywołaniu metody renderowania, a nie przed wywołaniem metody renderowania
To jest mój router, wywołuję model.fetch () z routera po utworzeniu widoku. Problem zatrzymał się, gdy zadzwoniłem do model.fetch () przed renderowaniem poprzedniego
define([''views/profile''],function(,ProfileView){
var router = Backbone.Router.extend({
currentView: null,
socketEvents: _.extend({}, Backbone.Events),
routes: {
'addcontact': 'addcontact',
'index': 'index',
'login': 'login',
'register': 'register',
'forgotpassword': 'forgotpassword',
'profile/:id': 'profile',
'contacts/:id': 'contacts',
"upload/:id":"upload"
},
profile: function(id) {
var model = new Account({id:id});
console.log('profile user:'+id);
this.changeView(new ProfileView({model:model})); //View is created here
model.fetch(); // model is fetched after view is rendered, cause for the problem in my case
}
});
return new router();
});