使用 node.js 和 Handlebar .js 显示文件夹



我想显示我在某个目录下的文件夹,IM 使用 Express3 车把。网页代码:

{{gallery}}

这是我有的:

res.render('pages/gallery', {
        title: 'גלריה',
        HomeActive:'',
        ContactActive:'',
        AboutActive:'',
        GalleryActive:'active',
        MapActive:'',
        EmailActive:'',
        helpers:{
            gallery:function(){
                var albums = [],
                    albumDir = './public/img/albums';
                eventEmitter.on('readFolder',function(){
                    var albums = [];
                    fs.readdir(albumDir, function (err, files) {
                        if (err) console.log(err);
                        for (var i = 0; i < files.length; i++) {
                            if (files[i].indexOf('.') == -1)
                                albums.push({album: files[i]});
                        }
                        console.log("read " + files);
                        eventEmitter.emit('folderRead',files);
                    });
                });
                console.log(albums);
                eventEmitter.emit('readFolder');
                return eventEmitter.on('folderRead',function(files){
                    console.log("end " + files)
                    return files;
                });
            }
        },
        PagitionHide:'hide'
    });

我在设置没有事件发射器的专辑时遇到了问题,它似乎是在做:

gallery:function(){
    var albums = [],
            albumDir = './public/img/albums';
            fs.readdir(albumDir, function (err, files) {
                if (err) console.log(err);
                for (var i = 0; i < files.length; i++) {
                    if (files[i].indexOf('.') == -1)
                        albums.push({album: files[i]});
                }
                console.log(albums); //logs the folders names.
            });
console.log(albums); //logs an empty array
return albums;
}

导致专辑为空,我猜是 Node.js 的异步。

但现在当 HTML 呈现其显示和对象时,如下所示:[对象对象]我在这里做错了什么?

你试过这个吗?

{{#each gallery}}
    {{album}}
{{/each}}

最新更新