Sails.js - передача данных в режим просмотра
Недавно я начал изучать, как использовать Sails.js, и я столкнулся с небольшой проблемой.
У меня есть модель, называемая Заявитель, следующим образом:
module.exports = {
attributes: {
name: {
type: 'STRING',
required: true
},
email: {
type: 'STRING',
required: true
}
}
};
Я построил действие индекса для возврата всех экземпляров модели Заявителя:
module.exports = {
index: function(req, res) {
Applicant.findAll().done(function(err, applicants) {
res.view({
apps: applicants
});
});
}
};
И это представление, которое я использую:
<section id="applicants">
<h1>List of applicants</h1>
<ul>
<% for (applicant in apps) { %>
<li><%= applicant.name %> <%= applicant.email %></li>
<% } %>
</ul>
</section>
Тем не менее, когда я загружаю соответствующий URL-адрес, я не вижу, как отображаются мои данные.
Я прочитал документацию Sails.js, но я не могу найти что-то не так с моим кодом.
Было бы здорово, если бы кто-то помог мне решить эту проблему.
Спасибо!
Ответы
Ответ 1
Попробуйте
<%= apps[applicant].name %>
Это похоже на цикл цикла for
. applicant
- это индекс в массиве apps
.
Изменить:. Лучше всего использовать массив javascript, встроенный в метод forEach
, потому что таким образом вы избегаете циклического перемещения по элементам, унаследованным от типа apps
(например, элементы, назначенные таким образом: apps.__proto__.foo = {name: "bar"}
или Array.prototype.foo2 = {name: "pi222"}
).
<% apps.forEach(function(applicant) { %>
<li><%= applicant.name %> <%= applicant.email %></li>
<% }); %>
P.S. Конечно, этот метод javascript (forEach
) не будет работать в IE <= 8 (если вы считаете, что используете его в браузере). Но мы находимся внутри NodeJs, который построен на вершине двигателя V8. Так что это все равно будет работать.