2

我有一个这样的数组:

var arr = ["element1","element2"];

我想在车把文件中获取它的元素。

我用谷歌搜索没有结果,我发现的唯一解决方案是:

{{#each files}}
<a href="/"{{path}}"">{{title}}</a>
{{/each}}

但这对我不利,因为我想实现一个目录中的所有文件都可以下载。

我在服务器端尝试的代码:

app.get('/download',function(req,res){
var items;
fs.readdir('./download',function(err,files){
        items = files;
});

res.render('download',{
    files:items
});
});

而且我不知道如何在客户端进行迭代以使数组中的所有元素都可下载。

在客户方面,我有一个包含链接的无序列表。问题是,我不知道如何实现这一目标。

客户端的代码:

<div id="container">
            <div class="highlight">
                <img src="img/highlight.png"></img>
                <p>A Click to download</p>
            </div>
            <ul>
                <li class="RoundedAll"><a href="/">Back</a></li>
            </ul>
            <br />
            <ul>
                <!-- What should I put here? -->
            </ul>
        </div>

感谢您的回答。

4

3 回答 3

4

首先,让我们假设你files:items是一个看起来像这样的把手阵列。

{ files:['filenameOne.ext', 'filenameTwo.ext', 'filenameThree.exe'] };

现在,当您在响应中编写了此内容并且您想要循环遍历 handlebars.js 中的数组时,这就是您的 HTML 应该是什么样子,使用您的代码。

<div id="container">
    <div class="highlight">
        <img src="img/highlight.png"></img>
        <p>A Click to download</p>
    </div>
    <ul>
        <li class="RoundedAll"><a href="/">Back</a></li>
    </ul>
    <br />
    <ul>
        {{#each files}}
        <li>{{this}}</li>
        {{/each}}
    </ul>
</div>

<li>{{this}}</li>包含列表中包含的文件名。然后访问它,您必须创建一个<a>链接到控制器的链接,app.get('/getActualFile', function(){ //serve the file here });然后将获取的文件写入响应中。

希望这可以为您指明正确的方向,并且在把手中使用迭代器更加明显。

我自己不喜欢车把,但那是因为我不完全习惯它。我自己更喜欢 Node.js 的这种模板语言,http ://paularmstrong.github.com/swig/

它具有更“清晰”的语法,但考虑到您可以自定义 Handlebars 的不同方式,它可能比 Handlebars 更糟糕。

于 2012-12-04T20:55:02.513 回答
1

为了使这项工作按照您的编码方式进行,您需要一个键:值对。

var arr = {path: "element1", title: "element2"};

以下:

var arr = {path: "downloads/mynewdownload", title: "My New Download"};

{{#each arr}}
     <a href="/{{path}}">{{title}}</a>
{{/each}}

会产生:

    <div id="container">
        <div class="highlight">
            <img src="img/highlight.png"></img>
            <p>A Click to download</p>
        </div>
        <ul>
            <li class="RoundedAll"><a href="/downloads/mynewdownload">My New Download</a></li>
        </ul>
        <br />
    </div>

如果您有多个键值对,它们可以存储在一个数组中并以相同的方式访问。

于 2014-05-01T12:07:12.173 回答
0

尝试这个:

<ul>
{{#each people}}
   <li>{{this}}</li>
{{/each}}
</ul>
于 2015-08-13T08:47:13.310 回答