nodeJS、express、MongoDB、Handlebars を使用して、単純な Web アプリを開発しています。サーバー側では、express-handlebar を使用します。
var exphbs = require('express-handlebars');
// View Engine
app.set('views', path.join(__dirname, 'views'));
app.engine('handlebars', exphbs(
{
defaultLayout:'layout',
helpers: { /*my helpers*/}}));
したがって、db にクエリを実行するときに、クライアントに結果をページで表示したいと考えています。
/*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 とハンドルバーの初心者です。しばらくお待ちください。