如何使用BigCommerce内置Handlebars Helper实现多属性对象数组排序?
解决BigCommerce Stencil主题中对象数组多属性排序问题
可行实现方法
Stencil内置的sortBy助手不支持逗号分隔的多属性字符串,正确做法是将每个排序属性作为独立参数传入sortBy。
修改后的核心代码:
{{#each (sortBy (after customer.addresses 1) "last_name" "first_name" "address1")}}
完整代码示例
{{#each (sortBy (after customer.addresses 1) "last_name" "first_name" "address1")}} <div class="panel panel--address"> <div class="panel-body"> <li>{{company}}</li> <li>{{address1}}</li> <li>{{address2}}</li> <li>{{city}}{{#if state}}, {{state}}{{/if}} {{zip}}</li> <li>{{country}}</li> </div> </div> {{/each}}
原理说明
Stencil的sortBy助手设计为接受数组后,可跟随多个排序属性参数,排序优先级按参数顺序依次降低:
- 首先按
last_name升序排序 - 当
last_name相同时,按first_name升序排序 - 当
last_name和first_name都相同时,按address1升序排序
这种方式是Stencil官方支持的多属性排序方案,完全匹配助手的参数设计逻辑,能解决同名地址的排序冲突问题。
内容的提问来源于stack exchange,提问作者SamAJr1
相关产品推荐
相关产品推荐

