我正在使用 nodeJS、express、MongoDB 和 Handlebars 开发一个简单的 Web 应用程序。服务器端我使用快速车把:
var exphbs = require('express-handlebars');
// View Engine
app.set('views', path.join(__dirname, 'views'));
app.engine('handlebars', exphbs(
{
defaultLayout:'layout',
helpers: { /*my helpers*/}}));
因此,当我查询数据库时,我想在页面中向客户端显示结果: /* some code */ router.get('/', function(req, res) {
/*query to mongo DB with mongoose*/
Coll.find(queryParams, function(err,coll){
if(err) {
console.log(err);
throw err;
}
else {
res.render('index', {'coll': coll});
}
});
使用把手显示结果非常简单:
{{#each coll}}
{{this}}
{{/each}}
但是我想允许用户在不与服务器再次交互的情况下对这个元素数组进行排序,因为查询结果是相同的并且只会改变顺序。 html代码将是:
<select id=id>
<option>sort1</option>
<option>sort2</option>
</select>
{{#each list}}
{{this}}
{{/this}}
<script>
$(document).ready(function () {
$('#id').change(function(){
//DO SOME STUFF WITH LIST
});
</script>
是否存在对通过 res.render(...) 传递的数组进行客户端排序的方法? 如果用户在选择标签中选择一个选项,我可以使用 AJAX 修改列表吗?如何?(始终不与服务器交互,也不在 mongoDB 上再次执行相同的查询)
PS:我是nodeJS和Handlebars的初学者,请耐心等待!