按文本排序HtmlElements列表

时间:2014-06-17 18:36:37

标签: dart

我正在尝试按List<HtmlElement>Text进行排序,将文本解析为num

 this.onClick.listen((e){
     this.parent.nextElementSibling.children.sort((Row a,Row b)=>
         num.parse(a.children[this.visibleIndex].text).
         compareTo(num.parse(b.children[this.visibleIndex].text)));
    });   

Row是一个扩展HtmlElement

的类

我得到了例外

Unsupported operation: Cannot sort element lists

是否有解决方法或我必须手动完成?

2 个答案:

答案 0 :(得分:2)

我还没有尝试过,但我认为添加.toList()时它应该可行。我认为这应该将其复制到可排序的标准列表中。

 this.onClick.listen((e){
     this.parent.nextElementSibling.children.toList().sort((Row a,Row b)=>
         num.parse(a.children[this.visibleIndex].text).
         compareTo(num.parse(b.children[this.visibleIndex].text)));
    });   

答案 1 :(得分:0)

import 'dart:html';

UListElement list;
ButtonInputElement boton;
main() {
  list = querySelector('#list'); 
  boton.onClick.listen( (e) => sort() );
}

void sort(){
  list.children = list.children.toList()
                  ..sort((LIElement x, LIElement y)=> y.text.length.compareTo(x.text.length) );  
}