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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions