我有一个骨干集合,基于集合内部模型的属性,我遍历集合并在UI中显示它。
逻辑是,如果模型的属性isNewCar
为true
,我将首先在UI中显示它们,然后是分隔符然后我将显示所有具有属性{{1的模型作为isNewCar
。
false
这看起来很乱,我理解它不那么优雅,有人可以建议用一些优雅的解决方案替换上面代码的更好方法吗?
答案 0 :(得分:1)
我建议有一个通用的渲染逻辑来在一个单独的函数中渲染项目,例如renderCars()并过滤集合,如下所示
function filterCars(isNew) {
var isNewCar = isNew
return function(car) {
return (car.isNewCar() === isNewCar);
}
}
renderCars (this.cars.filter(filterCars(true)) );
renderCars (this.cars.filter(filterCars(false)) );
我们上面所做的一切都是创建了一个辅助函数filterCars,它使用布尔值来决定是否需要新车。该辅助函数返回一个用于过滤汽车的函数。
Backbone过滤器使用下划线过滤器返回过滤结果的新数组。我将它传递给公共渲染函数。
我没有对此进行测试,但这应该有助于清除一些重复的代码。