11

我最近开始学习如何使用 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 文档,但似乎找不到我的代码有什么问题。

如果有人可以帮助我解决这个问题,那就太好了。

谢谢!

4

1 回答 1

10

尝试

<%= apps[applicant].name %>

这就像for循环工作一样。applicantapps数组中的索引。

编辑:更好的方法是使用javascript数组的内置方法forEach,因为这样可以避免循环遍历从apps的类型继承的元素(例如,元素,分配如下:apps.__proto__.foo = {name: "bar"}Array.prototype.foo2 = {name: "pi222"})。

<% apps.forEach(function(applicant)  { %>
    <li><%= applicant.name %> <%= applicant.email %></li>
<% }); %>

PS 当然,这个 javascript 的方法 ( forEach) 在 IE <= 8 中不起作用(如果您考虑在浏览器中使用它)。但是我们在 NodeJs 内部,它建立在 V8 引擎之上。因此,无论如何,这将起作用。

于 2013-08-14T11:42:06.730 回答