0
Handlebarsテンプレートに渡す際に、デフォルトのソートを反復するオブジェクトがありますが、デフォルトの方法ではなく特定の方法でソートします。ループの前にオブジェクトキーを並べ替えます。ハンドルバー
<div id="some-stuff"></div>
<script id="some-template" type="text/x-handlebars-template">
<ul>
{{#test this}}{{/test}}
</ul>
</script>
ヘルパー
Handlebars.registerHelper('test', function(obj, options) {
var sortIn = ['red', 'green', 'blue', 'yellow'];
var rt = '';
sortIn.forEach(function(entry) {
for (var i = 0; i < obj[entry].length; i++) {
rt += '<li><span>' + obj[entry][i] + '</span></li>';
}
});
return rt;
});
var source = $("#some-template").html();
var template = Handlebars.compile(source);
var data = { // want output as red, green, blue and yellow
'yellow': ['Yellow', 1, 2, 3, 4, 5],
'green': ['Green', 1, 2, 3, 4, 5],
'blue': ['Blue', 1, 2, 3, 4, 5],
'red': ['Red', 1, 2, 3, 4, 5]
};
var html = template(data);
$("#some-stuff").html(html);
しかし、いくつかの理由で、私はこれで満足していない、最後に、それは誰が私です - :私はこれを試した方法は次のようですループして要素をテンプレートに渡しています。 #each
を使用してヘルパーなしでsortIn
の順序でこれをデフォルトでループするにはどうすればよいですか。この質問に多少似
からSort object keys with Handlebarsあなたのケースで
'#each'を使用して特定の順序を指定するには、テンプレートに提供する前に' data'をオブジェクトの配列に再構成することができます - '[{color: 'red'、data:['Red'、1 、...]}、...] '。 –
可能な複製http://stackoverflow.com/questions/37056250/how-can-we-custom-sort-javascript-object-keys/ – guest271314
@ guest271314どのように複製されていますか?私はハンドルバーに特有のこの質問をしています...そして私がテンプレートを生成するために取っているアプローチ。 – Learner