Я создаю веб-страницу, чтобы показать недавние пожертвования всех пользователей приложения на основе анализа. Я создаю это из примера приложения Todo, которое можно найти здесь: https://parse.com/tutorials/todo-app-with-javascript. Вот код в моем основном .js файла (который в основном отражает учебник todo.js, кроме замененных имен классов и такого):Объекты Full Parse недоступны для шаблона поддерева
//Donation Model
//--------------
var Donation = Parse.Object.extend("Donation", {
//instance methods
//Default attributes
defaults: {
},
//Ensure that each donation created has content
initialize: function() {
}
});
// This is the transient application state, not persisted on Parse
var AppState = Parse.Object.extend("AppState", {
defaults: {
filter: "all"
}
});
//Donation Collection
//-------------------
var DonationList = Parse.Collection.extend({
model: Donation
});
//Donation Item View
//-----------------
var DonationView = Parse.View.extend({
tagName: "tr",
template: _.template($('#donation-template').html()),
//The DOM events specific to donation
events: {
},
initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
//The Application
//---------------
var AdminView = Parse.View.extend({
el: ".content",
initialize: function() {
var self = this;
_.bindAll(this, 'addOne', 'addAll', 'render');
this.$el.html(_.template($('#admin-template').html()));
////create out collection of donations
this.donations = new DonationList;
//setup the Parse query
var query = new Parse.Query(Donation);
query.include("user");
query.include("charity");
query.include("business");
this.donations.query = query;
this.donations.bind('add', this.addOne);
this.donations.bind('reset', this.addAll);
this.donations.bind('all', this.render);
this.donations.fetch({
success: function(donations) {
for(var i = 0; i < donations.length;i++) {
console.warn(donations.models[i]);
}
}
});
state.on("change", this.filter, this);
},
render: function() {
this.delegateEvents();
},
filter: function() {
this.addAll();
},
addOne: function(donation) {
var view = new DonationView({model: donation});
this.$("#donation-list").append(view.render().el);
},
addAll: function(collection, filter) {
this.$('#donation-list').html("");
this.donations.each(this.addOne);
}
});
//The main view for the app
var AppView = Parse.View.extend({
// Instead of generating a new element, bind to the existing skeleton of
//the App already present in the HTML.
el: $("#adminapp"),
initialize: function() {
this.render();
},
render: function() {
new AdminView();
}
});
var state = new AppState;
new AppView;
Когда модели выбираются из Parse в
this.donations.fetch({
success: function(donations) {
for(var i = 0; i < donations.length;i++) {
console.warn(donations.models[i]);
}
}
});
У меня есть все отношения с указателями пожертвования в полном объеме, такие как пользователь и все их свойства, а также благотворительность и все его свойства и т. Д. Однако я заинтересован в отображении имени пользователя, сделавшего пожертвование в underscore, но в этот момент пользовательский объект пожертвования больше не имеет свойства имени пользователя. Это как если бы некоторые свойства удалялись между тем, как возвращается запрос, и когда шаблону предоставляется новая коллекция пожертвований. Вот шаблон подчеркивание:
<script type="text/template" id="donation-template">
<td><%= donationAmount %></td>
<td><%= charity %></td>
<td><%= user %></td>
<td><%= business %></td>
<td><%= createdAt %></td>
</script>
donationAmount и createdAt отображаются, как и ожидалось, но благотворительность, пользователь и бизнес просто отображается как [объект Object], и я не могу получить доступ к любому из их свойств с помощью точечной нотации. Как я могу убедиться, что свойства, которые мне нужны во всех этих отношениях указателя, доступны для потребления по представлению подчеркивания?
Читать Синтаксическую JS SDK Docs о том, как заполнять указатели и отношения. По умолчанию они не заполняются – charlietfl
Не предполагается ли это выполнение? Я могу увидеть все свойства объекта, если я зарегистрирую их в блоке успеха запроса, но после этого они, кажется, недоступны после этого. – mike