Skip to content

for语法对于自定义集合的支持 #54

@otakustay

Description

@otakustay

简单来说,现在的etpl并不支持backboneCollection,也不支持emcCollection,因为它们封装了数组,并且没有暴露出类数组的索引下标访问功能

我们当然可以在一切这样的场景下先把Collection对象变成纯数组,但这会使得应用系统变得非常复杂,我们使用Collection是希望使用它的变化通知的相关事件,转为纯数组会失去这一功能,或者会变成每次收到集合变化时再转一次纯数组交给etpl

我总结了一下几个知名库的封装数组类的接口:

  • backbone.Collection:有.length属性,有eachforEach方法,使用at(index)访问元素
  • ember.Array:有.length属性,有forEach方法,使用objectAt(index)访问元素
  • ko.ObservableArray:有.length属性,能直接下标访问
  • jQuery:有.length,能直接下标访问

我们的emc.Collection.length属性,没有任何遍历的方法,使用get(index)访问元素

因此我希望可以支持这一类的封装数组,从上面来看,大家都会有.length属性,但访问方法各不相同,其中以eachforEach最为通用,emc可以添加该方法作支持

个人的建议是当具备.length属性时,增加检测forEacheach方法,存在的话也认为是一个数组并使用方法进行循环

最终这一需求会影响多少的体积,是否合适,还是交给 @errorrik 来判断吧

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions