gpt4 book ai didi

dart - Polymer 1.0 - iron-list - 选择

转载 作者:行者123 更新时间:2023-12-03 02:45:09 25 4
gpt4 key购买 nike

在 dart Polymer 1.0 中使用 iron-list。尝试通过选择列表中的项目来实现铁列表。这在项目是字符串时有效,但对于结构化类型无效。

当运行下面的代码时,获得以下打印输出。

>Contains : false
>Uncaught Unhandled exception:
>NoSuchMethodError: method not found: 'shorttext'
>Receiver: Instance of 'JsObjectImpl'

A breakpoint inside (objText != null) list "objText->JavaScriptView->proto>get/set shorttext"关闭,但提示绑定(bind)有问题。

iron-list 文档提到了一些关于对项目执行操作的内容。文档中的 JavaScript 示例有选择并使用模型。

https://elements.polymer-project.org/elements/iron-list

When true, tapping a row will select the item, placing its data model in the set of selected items retrievable via the selection property.

Note that tapping focusable elements within the list item will not result in selection, since they are presumed to have their * own action.

好的,有人了解过 dart-polymer 1.0 的类似部分吗?也欢迎就如何使用铁列表的选择提出建议?

HTML 端:

 <iron-list id="id_list" items="{{listitem}}" as="item" selection-enabled>
<template>
<paper-item on-tap="tap_event">{{item.shorttext}}</paper-item>
</template>
</iron-list>

在 Dart 方面:

class ItemText extends JsProxy {

@reflectable
String shorttext;
ItemText(this.shorttext);
}

@PolymerRegister('list-demo')
class ListDemo extends PolymerElement {

@property
List<ItemText> listitem;

@property
int nrelements = 10;

// Constructor used to create instance of MainApp.
ListDemo.created() : super.created(){
List<ItemText> l = [];

for (int i = 0; i < nrelements; ++i){
l.add(new ItemText('Name ' + i.toString()));
}

listitem = l;
print('created : ${$['id_list'].selectionEnabled}');
this.notifyPath('listitem', listitem);
}

@reflectable
void tap_event(event, [_]) {

IronList e = $['id_list'];
Object objText = e.selectedItem;
if (objText != null){
print('Contains : ${listitem.contains(objText)}');
print('The short text : ${objText.shorttext}');
}
}

}

最佳答案

换行

Object objText = e.selectedItem;

ItemText objText = convertToDart(e.selectedItem);

我想这是一个错误。请举报https://github.com/dart-lang/polymer-dart

我建议不要使用 Polymer 元素的 .created() 构造函数。请改用 attached()ready()

考虑将 selectedItem 绑定(bind)到属性,并在 selectedItem 值为此目的更改时运行代码,而不是 on-tap 事件.

`<iron-list ... selected-item="{{selectedItem}}">`
@Property(observer: 'selectedItemChanged') ItemText selectedItem;

@reflectable
void selectedItemChanged(newValue, oldValue) {
// your code here
}

@property ItemText selectedItem;

@Observe('selectedItem')
void selectedItemChanged(ItemText newValue) {
// your code here
}

关于dart - Polymer 1.0 - iron-list - 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33448961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com