重置和更新聚合物 1 中的列表 属性。0.rc
Resetting and updating a list property in polymer 1.0.rc
我有一个地图项列表 属性。
@property
List<Map<String, dynamic>> items = [
{'name': 'Acrid', 'checked': false},
{'name': 'Fishy', 'checked': false}
];
当 if 条件计算结果为真时显示。
<template
restamp
is = "dom-if"
if = "[[normalChangedRestampedToggler]]">
<div
class = "layout horizontal wrap body auto"
id = "container">
<paper-material
pad-bottom
class = "dropdown-content layout vertical"
elevation = "5">
<paper-input
value = "{{filterValue}}"
label = "Search"
class = "margin">
<iron-icon
suffix
icon = "search"></iron-icon>
</paper-input>
<paper-menu multi
on-click = "onClickHandler">
<template
id = "repeat"
is = "dom-repeat"
items = "{{items}}"
filter = "{{filter(filterValue)}}">
<paper-item
role = "menuitemcheckbox"
toggles = "true"
active = "{{item.checked}}">
<paper-checkbox
checked = "[[item.checked]]"
checked-changed = "checkedChanged"></paper-checkbox>
[[label(item)]]
</paper-item>
</template>
</paper-menu>
</paper-material>
</div>
</template>
条件 if 由纸张切换按钮设置:
@reflectable
void toggleNormalChangedEvent( event, [_] ) {
normalChangedRestampedToggler = !normalChangedRestampedToggler;
set('normalChangedRestampedToggler', normalChangedRestampedToggler);
switch ( normalChangedRestampedToggler ) {
case false:
for(var item in data)
{
item['checked'] = false;
}
set('items', data);
data = new List<Map<String, dynamic>>( );
break;
}
}
虽然 UI 按预期切换,但
set('items', data);
似乎没有重置项目 - 复选框的旧选中状态仍然存在。 属性 项似乎没有更新。
是否可以通过某种方式强制执行此更新?
PS 问题可能是由于复选框位于嵌套模板中吗?如果是这样,有没有办法克服这个问题?
谢谢
这是多余的
normalChangedRestampedToggler = !normalChangedRestampedToggler;
因为这包括上面的(添加!
)
set('normalChangedRestampedToggler',! normalChangedRestampedToggler);
for(var item in data) {
item['checked'] = false;
}
应该是
for(int i = 0; i < items.length; i++) {
set('items.$i.checked', false);
}
data = new List<Map<String, dynamic>>( );
不执行任何操作,因为您可能会再次分配相同的列表,而 Polymer 认为没有变化。
也template is="dom-repeat
使用
items = "{{items}}"
为什么设置data
?
我有一个地图项列表 属性。
@property
List<Map<String, dynamic>> items = [
{'name': 'Acrid', 'checked': false},
{'name': 'Fishy', 'checked': false}
];
当 if 条件计算结果为真时显示。
<template
restamp
is = "dom-if"
if = "[[normalChangedRestampedToggler]]">
<div
class = "layout horizontal wrap body auto"
id = "container">
<paper-material
pad-bottom
class = "dropdown-content layout vertical"
elevation = "5">
<paper-input
value = "{{filterValue}}"
label = "Search"
class = "margin">
<iron-icon
suffix
icon = "search"></iron-icon>
</paper-input>
<paper-menu multi
on-click = "onClickHandler">
<template
id = "repeat"
is = "dom-repeat"
items = "{{items}}"
filter = "{{filter(filterValue)}}">
<paper-item
role = "menuitemcheckbox"
toggles = "true"
active = "{{item.checked}}">
<paper-checkbox
checked = "[[item.checked]]"
checked-changed = "checkedChanged"></paper-checkbox>
[[label(item)]]
</paper-item>
</template>
</paper-menu>
</paper-material>
</div>
</template>
条件 if 由纸张切换按钮设置:
@reflectable
void toggleNormalChangedEvent( event, [_] ) {
normalChangedRestampedToggler = !normalChangedRestampedToggler;
set('normalChangedRestampedToggler', normalChangedRestampedToggler);
switch ( normalChangedRestampedToggler ) {
case false:
for(var item in data)
{
item['checked'] = false;
}
set('items', data);
data = new List<Map<String, dynamic>>( );
break;
}
}
虽然 UI 按预期切换,但
set('items', data);
似乎没有重置项目 - 复选框的旧选中状态仍然存在。 属性 项似乎没有更新。
是否可以通过某种方式强制执行此更新?
PS 问题可能是由于复选框位于嵌套模板中吗?如果是这样,有没有办法克服这个问题?
谢谢
这是多余的
normalChangedRestampedToggler = !normalChangedRestampedToggler;
因为这包括上面的(添加!
)
set('normalChangedRestampedToggler',! normalChangedRestampedToggler);
for(var item in data) {
item['checked'] = false;
}
应该是
for(int i = 0; i < items.length; i++) {
set('items.$i.checked', false);
}
data = new List<Map<String, dynamic>>( );
不执行任何操作,因为您可能会再次分配相同的列表,而 Polymer 认为没有变化。
也template is="dom-repeat
使用
items = "{{items}}"
为什么设置data
?