重置所有内容后模板不更新
template doesn't update after resetting everything
我有一个自定义元素可以将项目添加到容器中。我有一个 "close" 功能,可以关闭容器并清除项目,以便用户可以开始添加新项目。这对于添加内容和关闭非常有效,但是当我尝试在自定义元素关闭后添加新项目时,模板似乎没有像我希望的那样更新。
这是我的自定义元素:
<template>
<div id="item-wrapper">
<div id="item-header">
<div id="item-title">${itemTitle}</div>
<div id="item-close" click.trigger="close($event)">X</div>
</div>
<div style="display:none;">${itemDataConveyor.getItems()}</div>
<div repeat.for="item of itemDataConveyor.getItems()" class="item-container">
${item}
</div>
</div>
</template>
还有部分JS:
constructor(itemDataConveyor) {
this.itemDataConveyor = itemDataConveyor;
}
close(event){
event.stopPropagation();
console.log('before' + this.itemDataConveyor.getItems());
this.itemDataConveyor.clear();
console.log('after' + this.itemDataConveyor.getItems());
$('#item-wrapper').hide();
}
如果我添加说 3 个项目然后关闭自定义元素我得到输出:
before [item1],[item2],[item3]
after
我已通过开发者控制台调试检查项目是否已正确清除并正确添加,但模板不会删除项目,并且在调用 close(event)
后不会添加任何新项目.
隐藏的div关闭后也不会改变..
我的假设是,当您在中继器内调用 itemDataConveyor.getItems()
时:
<div repeat.for="item of itemDataConveyor.getItems()" class="item-container">
${item}
</div>
您正在迭代项目的副本。因此删除所有项目不会改变已呈现的内容。
也许可以试试这样:
<div repeat.for="item of items" class="item-container">
${item}
</div>
并且在您的视图模型中:
constructor(itemDataConveyor) {
this.itemDataConveyor = itemDataConveyor;
this.items = this.itemDataConveyor.getItems();
}
close(event){
this.itemDataConveyor.clear();
this.items = this.itemDataConveyor.getItems();
$('#item-wrapper').hide();
}
我有一个自定义元素可以将项目添加到容器中。我有一个 "close" 功能,可以关闭容器并清除项目,以便用户可以开始添加新项目。这对于添加内容和关闭非常有效,但是当我尝试在自定义元素关闭后添加新项目时,模板似乎没有像我希望的那样更新。
这是我的自定义元素:
<template>
<div id="item-wrapper">
<div id="item-header">
<div id="item-title">${itemTitle}</div>
<div id="item-close" click.trigger="close($event)">X</div>
</div>
<div style="display:none;">${itemDataConveyor.getItems()}</div>
<div repeat.for="item of itemDataConveyor.getItems()" class="item-container">
${item}
</div>
</div>
</template>
还有部分JS:
constructor(itemDataConveyor) {
this.itemDataConveyor = itemDataConveyor;
}
close(event){
event.stopPropagation();
console.log('before' + this.itemDataConveyor.getItems());
this.itemDataConveyor.clear();
console.log('after' + this.itemDataConveyor.getItems());
$('#item-wrapper').hide();
}
如果我添加说 3 个项目然后关闭自定义元素我得到输出:
before [item1],[item2],[item3]
after
我已通过开发者控制台调试检查项目是否已正确清除并正确添加,但模板不会删除项目,并且在调用 close(event)
后不会添加任何新项目.
隐藏的div关闭后也不会改变..
我的假设是,当您在中继器内调用 itemDataConveyor.getItems()
时:
<div repeat.for="item of itemDataConveyor.getItems()" class="item-container">
${item}
</div>
您正在迭代项目的副本。因此删除所有项目不会改变已呈现的内容。
也许可以试试这样:
<div repeat.for="item of items" class="item-container">
${item}
</div>
并且在您的视图模型中:
constructor(itemDataConveyor) {
this.itemDataConveyor = itemDataConveyor;
this.items = this.itemDataConveyor.getItems();
}
close(event){
this.itemDataConveyor.clear();
this.items = this.itemDataConveyor.getItems();
$('#item-wrapper').hide();
}