以优雅的方式基于模型的属性迭代骨干集合

时间:2015-05-29 06:37:58

标签: javascript backbone.js

我有一个骨干集合,基于集合内部模型的属性,我遍历集合并在UI中显示它。

逻辑是,如果模型的属性isNewCartrue,我将首先在UI中显示它们,然后是分隔符然后我将显示所有具有属性{{1的模型作为isNewCar

false

这看起来很乱,我理解它不那么优雅,有人可以建议用一些优雅的解决方案替换上面代码的更好方法吗?

1 个答案:

答案 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过滤器使用下划线过滤器返回过滤结果的新数组。我将它传递给公共渲染函数。

我没有对此进行测试,但这应该有助于清除一些重复的代码。